题目描述
输入
多组数据输入。一行为一组输入数据,包括两个非负整数a、b(a <= b <= 10^100),当a=b=0时输入终止。
输出
样例输入
10 100
1234567890 9876543210
0 0
样例输出
函数 { int i; memset(a,sizeof(a)); for(i = 0 ; i < len ; i++) a[i] = T.a[i]; } BigNum & BigNum::operator=(const BigNum & n) //重载赋值运算符,大数之间进行赋值运算 { int i; len = n.len; memset(a,sizeof(a)); for(i = 0 ; i < len ; i++) a[i] = n.a[i]; return *this; } BigNum BigNum::operator+(const BigNum & T) const //两个大数之间的相加运算 { BigNum t(*this); int i,big; //位数 big = T.len > len ? T.len : len; for(i = 0 ; i < big ; i++) { t.a[i] +=T.a[i]; if(t.a[i] > MAXN) { t.a[i + 1]++; t.a[i] -=MAXN+1; } } if(t.a[big] != 0) t.len = big + 1; else t.len = big; return t; } bool BigNum::operator>(const BigNum & T) const //大数和另一个大数的大小比较 { int ln; if(len > T.len) return true; else if(len == T.len) { ln = len - 1; while(a[ln] == T.a[ln] && ln >= 0) ln--; if(ln<0) return true; if(ln >= 0 && a[ln] > T.a[ln]) return true; else return false; } else return false; } void BigNum::print() //输出大数 { int i; cout << a[len - 1]; for(i = len - 2 ; i >= 0 ; i--) { cout.width(DLEN); cout.fill('0'); cout << a[i]; } cout << endl; } int main(void) { char a1[105]; char b1[105]; BigNum a,b,t1,t2,t; t1 = 1;t2 = 2; int cnt = 0; while(scanf("%s%s",a1,b1)!=EOF){ // cout<<a1<<endl; // cout<<b1<<endl; t1 = 1;t2 = 2; cnt = 0; a = a1; b = b1; // cout<<b1<<endl; // b.print(); if(BigNum(0)>a&&BigNum(0)>b) break; while(b>t1){ if(t1>a){ cnt++; } t = t1+t2; t1 = t2; t2 = t; } printf("%d\n",cnt); } return 0; }