#include #include #include #define DIGITS 200 ifstream in("fibs.in"); typedef struct {char val[DIGITS];} integer; integer sscan(char* s) { integer a; int i,j; for (i=0; s[i]; i++); i--; for (j=0;i>=0; i--,j++) a.val[j]=s[i]-'0'; for (;j=0; i--) if (a.val[i]) break; for (j=DIGITS-1; j>=0; j--) if (b.val[j]) break; if (i>j) return 1; if (i=0; i--) { if (a.val[i]>b.val[i]) return 1; if (a.val[i]=10) { res.val[i]-=10; carry=1; } else carry=0; } return res; } int main() { while(1) { string s1,s2; integer i1, i2; in>>s1>>s2; if (s1=="0"&&s2=="0") break; i1=sscan(s1.c_str()); i2=sscan(s2.c_str()); long count=0; int cstarted=0; integer f1; integer f2; integer akt; fill_n(f1.val,DIGITS,0); fill_n(f2.val,DIGITS,0); f1.val[0]=1; f2.val[0]=2; if (cmp(f1,i1)>=0&&cmp(f1,i2)<=0)count++; if (cmp(f2,i1)>=0&&cmp(f2,i2)<=0)count++; while(1) { akt=add(f1,f2); f1=f2; f2=akt; if (!cstarted) if (cmp(akt,i1)>=0) cstarted=1; if (cmp(akt,i2)>0) break; count+=cstarted; //cout<