代码:
#include<iostream> #include<string> using namespace std; int ns[2100] = { 0 }; string add(string sa, string sb) { string sa1, sb1; sa1 = sa; sb1 = sb; int la = sa.length(); int lb = sb.length(); if (la < lb) { string tmps = sa; sa = sb; sb = tmps; int tmpi; tmpi = la; la = lb; lb = tmpi; } string st = ""; for (int j = lb; j < la; ++j) { st += '0'; } st += sb; sb = st; int num = 0, k = 0; for (int m = la - 1; m >= 0; --m) { int sum = (sa[m] - '0') + (sb[m] - '0') + num; ns[k++] = sum % 10; num = sum / 10; } if (num > 0) { ns[k++] = num; } string str = ""; for (int j = k - 1; j >= 0; --j) { str += (ns[j] + '0'); } return str; } int main() { string f[501]; string a, b; f[1] = "1"; f[2] = "2"; for (int i = 3; i < 501; ++i) { f[i] = add(f[i - 1], f[i - 2]); } while (cin >> a >> b) { if (a[0] == '0' && b[0] == '0') { break; } int start = 0, end = 500; for (int i = 1; i < 501; ++i) { if (a.length() > f[i].length()) { continue; } else if (a.length() < f[i].length()) { start = i; break; } else { if (a <= f[i]) { start = i; break; } } } for (int i = 500; i > 0; --i) { if (b.length() < f[i].length()) { continue; } else if (b.length() > f[i].length()) { end = i; break; } else { if (b >= f[i]) { end = i; break; } } } cout << end - start + 1 << endl; } return 0; }