图灵杯-第四届“图灵杯”NEUQ-ACM 程序设计竞赛-C-来简单地数个数
2017-06-12 00:56
429 查看
ACM模版
为什么说我死板了呢?题目中说当 a=b=0 时就终止,平时做这种题时,总是当任意一个为 0 后就可以确定直接结束了……而这里却不是这样,当其中只有一个为 0 时是合法的,即 L=0 的时候,比赛时打死我也没有想到这里出了问题,一直在找 bug,找了快一个小时,最后卒!!!
描述
题解
发现做题做得多了连整个人都死板了……这个题拿到手就写,思路简单至极,就是高精度求斐波那契数列,然后遍历一遍求在 [L,R] 范围内的数的个数,也可以使用二分快一些,这里需要求到前480个斐波那契数,因为到这里时刚好超过 100 位。为什么说我死板了呢?题目中说当 a=b=0 时就终止,平时做这种题时,总是当任意一个为 0 后就可以确定直接结束了……而这里却不是这样,当其中只有一个为 0 时是合法的,即 L=0 的时候,比赛时打死我也没有想到这里出了问题,一直在找 bug,找了快一个小时,最后卒!!!
代码
#include <iostream> #include <cstdio> #include <string> using namespace std; const int MAXN = 550; const int MAXL = 105; int Fib[MAXN][MAXL]; int limit = -1; void init() { Fib[0][0] = Fib[1][0] = 104; Fib[0][104] = Fib[1][104] = 1; for (int i = 2; i < MAXN; i++) { int c = 0; for (int j = 104; j > 0; j--) { Fib[i][j] = Fib[i - 1][j] + Fib[i - 2][j] + c; c = Fib[i][j] / 10; Fib[i][j] %= 10; } for (int j = 1; j < MAXL; j++) { if (Fib[i][j] != 0) { Fib[i][0] = j; break; } } if (c > 0) { limit = i; break; } } } string a, b; int A[MAXL], B[MAXL]; int main(int argc, const char * argv[]) { init(); // freopen("/Users/zyj/Desktop/input.txt", "r", stdin); while (cin >> a >> b, a[0] != '0' || b[0] != '0') { int j = 104; for (int i = (int)a.length() - 1; i >= 0; i--, j--) { A[j] = a[i] - '0'; } A[0] = j + 1; j = 104; for (int i = (int)b.length() - 1; i >= 0; i--, j--) { B[j] = b[i] - '0'; } B[0] = j + 1; int cnt = 0; for (int i = 1; i < limit; i++) { if (Fib[i][0] > A[0]) { continue; } if (Fib[i][0] < B[0]) { break; } if (Fib[i][0] < A[0] && Fib[i][0] > B[0]) { cnt++; continue; } int flag = 1; if (Fib[i][0] == A[0]) { for (int j = A[0]; j < MAXL; j++) { if (A[j] < Fib[i][j]) { break; } else if (A[j] > Fib[i][j]) { flag = 0; break; } } } if (Fib[i][0] == B[0]) { for (int j = B[0]; j < MAXL; j++) { if (B[j] > Fib[i][j]) { break; } else if (B[j] < Fib[i][j]) { flag = 0; break; } } } if (flag) { cnt++; } } cout << cnt << '\n'; } return 0; }
相关文章推荐
- 图灵杯-第四届“图灵杯”NEUQ-ACM 程序设计竞赛-D-简单图形输出
- 图灵杯-第四届“图灵杯”NEUQ-ACM 程序设计竞赛-J-简单的变位词
- 图灵杯-第四届“图灵杯”NEUQ-ACM 程序设计竞赛-F-一道简单的递推题
- 图灵杯-第四届“图灵杯”NEUQ-ACM 程序设计竞赛-E-简单的RMQ
- 图灵杯-第四届“图灵杯”NEUQ-ACM 程序设计竞赛-A-谷神的赌博游戏
- 图灵杯-第四届“图灵杯”NEUQ-ACM 程序设计竞赛-G-那么大奶牛之神
- 第四届“图灵杯”NEUQ-ACM 程序设计竞赛(团队赛)
- ACM学习历程—NPU 2015年陕西省程序设计竞赛网络预赛(正式赛)E题 简单题(同余 && 快速幂)
- 山东省第四届ACM大学生程序设计竞赛 A^X mod P
- [2013山东省第四届ACM大学生程序设计竞赛]——Alice and Bob
- 山东省第四届ACM大学生程序设计竞赛 The number of steps 概率dp
- Contest Print Server (2013年山东省第四届ACM大学生程序设计竞赛):
- 山东省第四届ACM大学生程序设计竞赛 Mountain Subsequences dp
- 2013年山东省第四届ACM大学生程序设计竞赛-最后一道大水题:Contest Print Server
- 山东省第四届ACM大学生程序设计竞赛 Boring Counting 划分树
- 2013年山东省第四届ACM大学生程序设计竞赛 Problem A Rescue The Princess 向量法 水题
- 山东省第四届ACM大学生程序设计竞赛-Rescue The Princess(计算几何)
- [2013山东省第四届ACM大学生程序设计竞赛]——Contest Print Server
- Alice and Bob(2013年山东省第四届ACM大学生程序设计竞赛)
- 2013年山东省第四届ACM大学生程序设计竞赛——A^X mod P