洛谷P1348 Couple number

emmm很容易去想用暴力去解题啊……但是看上去这题正解就不是暴力了~

首先要明确平方差公式这一存在

a^2-b^2=(a+b)(a-b)

二话不说打个表看看规律

#include<cstdio>
using namespace std;
int main(){freopen("in.txt","w",stdout);for(int i=0;i<20;i++){for(int j=i;j<20;j++)printf("%d ",j*j-i*i); puts("");}return 0;
}
0 1  4  9  16  25  36  49  64  81  100 121 144 169 196 225 256 289 324 361
0 3  8  15 24  35  48  63  80  99  120 143 168 195 224 255 288 323 360
0 5  12 21 32  45  60  77  96  117 140 165 192 221 252 285 320 357
0 7  16 27 40  55  72  91  112 135 160 187 216 247 280 315 352
0 9  20 33 48  65  84  105 128 153 180 209 240 273 308 345
0 11 24 39 56  75  96  119 144 171 200 231 264 299 336
0 13 28 45 64  85  108 133 160 189 220 253 288 325
0 15 32 51 72  95  120 147 176 207 240 275 312
0 17 36 57 80  105 132 161 192 225 260 297
0 19 40 63 88  115 144 175 208 243 280
0 21 44 69 96  125 156 189 224 261
0 23 48 75 104 135 168 203 240
0 25 52 81 112 145 180 217
0 27 56 87 120 155 192
0 29 60 93 128 165
0 31 64 99 136
0 33 68 105
0 35 72
0 37
0

从第一列可以看出0是一个CP数;

证明:N=a^2-b^2当a=b时a^2=b^2所以N=0

从第二列可以看出数由1开始递增,而且是所有的奇数

又这列都是由(a+1)^2与a^2的差

证明:N=a^2-b^2当a=b+1时N=(b+1)^2-b^2=b^+2b+1-b^=2b+1当b为任意非负数时,N可以为任意奇数
证明2:(a+b)(a-b)=N(a+b)与(a-b)的奇偶性一致所以(a+b)和(a-b)都是奇数时他们的积也一定是奇数!

然后第三列全是偶数,而且都是4的倍数,其他非奇数列都满足是4的倍数这一性质,于是猜想:CP数是奇数+4的倍数

为了证明所有CP数中的非奇数(也就是偶数)全是4的倍数

于是写了程序用来验证

#include<cstdio>
using namespace std;
int main(){freopen("in.txt","r",stdin);for(int i=1;i<=10000;i++){if(i%2==0){if(i%4!=0){puts("NO");return 0;}}}puts("YES");return 0;
}

程序最后输出YES

证明:(a+b)(a-b)=N(a+b)与(a-b)的奇偶性一致所以当(a+b)与(a-b)都是偶数时(a+b)和(a-b)都是2的倍数所以两数相乘必有2*2=4所以两数会被4整除

证出CP数的性质后就可以上代码了!

#include<cstdio>
using namespace std;
int main(){int a,b;scanf("%d%d",&a,&b);int ans=0;for(int i=a;i<=b;i++){if(i&1==1)ans++;else{if(i%4==0)ans++; } }printf("%d",ans);return 0;
}

这里是枚举了这个给定范围的所有数,然后判断是否是奇数或者4的倍数

虽然这份代码能AC这道题

但是如果数据范围一大1e9那种级别的

岂不是很尴尬~~~

所以有没有公式能直接算出来呢??

#include<cstdio>
using namespace std;
int main(){int a,b;scanf("%d%d",&a,&b);int c=a,d=b;int ans=0;if(a%2==0)a++;if(b%2==0)b--;if(a<=b)ans=(b-a)/2+1;while(c%4!=0)c++;while(d%4!=0)d--;if(c<=d)ans+=(d-c)/4+1;printf("%d",ans);return 0;
}

这样时间上就大大的节约了!

转载于:https://www.cnblogs.com/Neworld2002/p/8470848.html

洛谷P1348 Couple number相关推荐

  1. 洛谷 P1348 Couple number

    洛谷 P1348 Couple number 链接 https://www.luogu.org/problem/P1348 题目 题目描述 任何一个整数N都能表示成另外两个整数a和b的平方差吗?如果能 ...

  2. 洛谷——P1348 Couple number(java实现)

    对于一个整数 nn,若存在正整数 a, ba,b,满足 n = a^2 - b^2n=a 2 −b 2 ,则称 nn 是 Couple number. 请求出 [a, b][a,b] 范围内有多少个 ...

  3. 洛谷——P1348 Couple number

    https://www.luogu.org/problemnew/show/P1348 题目描述 任何一个整数N都能表示成另外两个整数a和b的平方差吗?如果能,那么这个数N就叫做Couple numb ...

  4. C++千题千解 | P1348 Couple number(洛谷)

    目录 题目 答案 结语 题目 题目描述 对于一个整数 nn,若存在两个自然数 x, yx,y,满足 n = x^2 - y^2n=x 2−y 2,则称 nn 是 Couple number.给出 a, ...

  5. 洛谷 2953 [USACO09OPEN]牛的数字游戏Cow Digit Game

    洛谷 2953  [USACO09OPEN]牛的数字游戏Cow Digit Game 题目描述 Bessie is playing a number game against Farmer John, ...

  6. 记录奥林比克/课程录制 洛谷P2255 [USACO14JAN]

    题面在最下方. 本题贪心可解,我也不是很懂动规解法(双线程DP?) 先把各个课程(比赛)按结束时间从小到大排序,记录两个摄像机的结束时间. 然后枚举课程,如果某个课程的开始时间早于任何一台摄像机的结束 ...

  7. [洛谷P1074] 靶形数独

    洛谷题目链接:靶形数独 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博 ...

  8. 洛谷P1246C语言,codevs1246 丑数

    题目描述 Description 对于一给定的素数集合 S = {p1, p2, ..., pK}, 来考虑那些质因数全部属于S 的数的集合.这个集合包括,p1, p1p2, p1p1, 和 p1p2 ...

  9. 洛谷 P3184 [USACO16DEC]Counting Haybales数草垛

    洛谷 P3184 [USACO16DEC]Counting Haybales数草垛 题目描述 Farmer John has just arranged his NN haybales (1 \leq ...

最新文章

  1. Android怎么自定义listview布局,android – 如何将listView标头添加为自定义布局
  2. Modbus RTU 通信工具设计
  3. 洛谷P1541 乌龟棋
  4. mysql alter算法_MySQL ALTER语法的运用方法 操作索引和字段
  5. vim技巧之删除引号之间的的快捷键
  6. 【干货】TensorFlow 2.0官方风格与设计模式指南(附示例代码)
  7. 第二章. node中的模块和require
  8. 去哪儿-13-city-vuex
  9. 二分查找算法(C#实现)
  10. 奶爸业余单片机学习之:C语言基础——for循环及for嵌套
  11. Navicat 11 Premium中文破解版使用心得
  12. 大数据平台监控界面和报表
  13. 【渝粤题库】陕西师范大学202013 民法专论 作业
  14. 利用手机传感器测量高度
  15. AWS Lambda重大更新,跨越编程语言差异之门?
  16. 强制修改.ko文件中的内核版本号与内核对应
  17. python爬房源信息_Python:爬取airbnb房源信息(Selenium)
  18. 51单片机学习篇-- --基于51单片机的串口通信协议
  19. 开源消息总线eventBus学习
  20. Hadoop的原理是什么

热门文章

  1. jar包过大?手把手教你分析Maven依赖,完美“瘦身”优化!
  2. 腾讯安全2020年区块链成绩单出炉
  3. 计算机在生活中的作用80字英文作文,关于电脑的80字英语作文强调电脑的功能以及人们日常怎样用...
  4. 经纬度在线查询,地名(批量)查询经纬度,经纬度(批量)查询地名
  5. MATLAB中能对三角函数降幂嘛,初中数学三角函数降幂公式
  6. jquery实现滑动滚动条出现对联广告
  7. Python 画沿着高对称性的能带图
  8. Leetcode 14.最长公共前缀(Longest Common Prefix)
  9. 适量饮酒,对身体好?医生说:恰恰相反!
  10. 使用百度天气API制作天气组件