改章节笔者在青岛逛街的时候突然想到的...今天就有想写几篇关于输入超时的笔记,所以回家到之后就奋笔疾书的写出来发表了
有时候用long long 会超时 用int 不会
有所 有时候对于1000 000 000 这样的据数 如果没有必要用到 long long 或者 __int64 就不要用他们
int 32 位 2的32次方 于等4294967296 能示表的围范还是很大的 4*10^9
面下结合一个目题看下 (曾到碰过好几个用 long long 超时的了)
-
[1360] Divide Exactly
- 时光制约: 1000 ms 存内制约: 65535 K
- 问题描述
-
3, 7, 15, 31, 63, 127...
Can you find the law? OK, just 2 ^ N -1.
So, question follows. If I give you a integer N, can you find the minimum M makes (2 ^ N - 1) % (2 ^ M - 1) = 0? N and M is at least 2.
- 输入
-
Input until EOF.
Each test contains one integer N (2 <= N <= 1,100,000,000).
- 输出
-
One integer M will be the output.
- 样例输入
-
2 3
- 样例输出
-
2 3
- 提示
-
无
- 起源
-
Hungar
- 操纵
http://acm.nbut.cn/Problem/view.xhtml?id=1360
问输入n 请找出小最的m满意
(2 ^ N - 1) % (2 ^ M - 1) = 0
路思 : 打出1--60的可以看出m就是n的小最的因子
对于是ac的程序
#include <iostream> #include<stdio.h> #include<math.h> using namespace std; int main() { int n; while(~scanf("%d", &n)) { if(n % 2 == 0) { printf("2\n"); continue; } int p = 1; int x =sqrt(1.0 * n); for(int i = 3; i <= x; i += 2) { if(n % i == 0) { p = i; break; } } if(p == 1)printf("%d\n", n); else printf("%d\n", p); } return 0; }
然而 这样将n按照long long情势输入却会超时#include <iostream> #include<stdio.h> #include<math.h> using namespace std; #define ll long long int main() { ll n; while(~scanf("%lld", &n)) { if(n % 2 == 0) { printf("2\n"); continue; } int p = 1; int x =sqrt(1.0 * n); for(int i = 3; i <= x; i += 2) { if(n % i == 0) { p = i; break; } } if(p == 1)printf("%lld\n", n); else printf("%d\n", p); } return 0; }
文章结束给大家分享下程序员的一些笑话语录:
刹车失灵
有一个物理学家,工程师和一个程序员驾驶着一辆汽车行驶在阿尔卑斯山脉 上,在下山的时候,忽然,汽车的刹车失灵了,汽车无法控制地向下冲去, 眼看前面就是一个悬崖峭壁,但是很幸运的是在这个悬崖的前面有一些小树 让他们的汽车停了下来, 而没有掉下山去。 三个惊魂未定地从车里爬了出来。
物理学家说, “我觉得我们应该建立一个模型来模拟在下山过程中刹车片在高 温情况下失灵的情形”。
工程师说, “我在车的后备厢来有个扳手, 要不我们把车拆开看看到底是什么 原因”。
程序员说,“为什么我们不找个相同的车再来一次以重现这个问题呢?”