//ZOJ 1962
//大整数加法
//2010-3-19
#include<stdio.h>
#include<string.h>
//大整数加法
//2010-3-19
#include<stdio.h>
#include<string.h>
#define M 102
void add(int *a, int *b, int *e,int &len);
int comp(int *c, int *d, int constlen, int len);
void add(int *a, int *b, int *e,int &len);
int comp(int *c, int *d, int constlen, int len);
int main()
{
char str1[M],
str2[M];
int s1[M],
s2[M],
num1[M],
num2[M],
fib[M],
constlen1,
constlen2,
len;
scanf("%s %s",str1,str2);
while(strcmp(str1,"0")!=0 || strcmp(str2,"0")!=0)//这个条件 哎 害苦了我啊
{ //终止条件 0 0 是&&关系
int count,sta1,sta2,flag,i1,i2;
count=0;
constlen1=strlen(str1);
constlen2=strlen(str2);
len=1;
for(i1=0; i1<constlen1; i1++)
s1[constlen1-1-i1]=str1[i1]-'0';
for(i2=0; i2<constlen2; i2++)
s2[constlen2-1-i2]=str2[i2]-'0';
for( ; i1<M; i1++)
s1[i1]=0;
for( ; i2<M; i2++)
s2[i2]=0;
num1[0]=0;
num2[0]=1;
fib[0]=0;
for(int i=1; i<M; i++)
num1[i]=num2[i]=fib[i]=0;
flag=1;
while(flag!=0)
{
add(num1,num2,fib,len);
sta1=comp(fib,s1,constlen1,len);
sta2=comp(fib,s2,constlen2,len);
if(sta1>=0 && sta2<=0)
count++;
if(sta2>0)
flag=0;
for(int i=0; i<=len; i++)
num1[i]=num2[i];
for(int i=0; i<=len; i++)
num2[i]=fib[i];
for(int i=0; i<=len; i++)
fib[i]=0;
}
printf("%d/n",count);
scanf("%s %s",str1,str2);
}
return 0;
}
void add(int *a, int *b, int *e,int &len)
{
for(int i=0; i<len; i++)
{
e[i]=e[i]+a[i]+b[i];
e[i+1]=e[i+1]+e[i]/10;
e[i]=e[i]%10;
}
for(int i=M-1; i>=len; i--)
if(e[i])
++len;
}
int comp(int *c, int *d, int constlen, int len)
{
if(len<constlen)
return -1;
for(int i=len-1; i>=0; i--)
if(c[i]!=d[i])
return c[i]-d[i];
return 0;
}
{
char str1[M],
str2[M];
int s1[M],
s2[M],
num1[M],
num2[M],
fib[M],
constlen1,
constlen2,
len;
scanf("%s %s",str1,str2);
while(strcmp(str1,"0")!=0 || strcmp(str2,"0")!=0)//这个条件 哎 害苦了我啊
{ //终止条件 0 0 是&&关系
int count,sta1,sta2,flag,i1,i2;
count=0;
constlen1=strlen(str1);
constlen2=strlen(str2);
len=1;
for(i1=0; i1<constlen1; i1++)
s1[constlen1-1-i1]=str1[i1]-'0';
for(i2=0; i2<constlen2; i2++)
s2[constlen2-1-i2]=str2[i2]-'0';
for( ; i1<M; i1++)
s1[i1]=0;
for( ; i2<M; i2++)
s2[i2]=0;
num1[0]=0;
num2[0]=1;
fib[0]=0;
for(int i=1; i<M; i++)
num1[i]=num2[i]=fib[i]=0;
flag=1;
while(flag!=0)
{
add(num1,num2,fib,len);
sta1=comp(fib,s1,constlen1,len);
sta2=comp(fib,s2,constlen2,len);
if(sta1>=0 && sta2<=0)
count++;
if(sta2>0)
flag=0;
for(int i=0; i<=len; i++)
num1[i]=num2[i];
for(int i=0; i<=len; i++)
num2[i]=fib[i];
for(int i=0; i<=len; i++)
fib[i]=0;
}
printf("%d/n",count);
scanf("%s %s",str1,str2);
}
return 0;
}
void add(int *a, int *b, int *e,int &len)
{
for(int i=0; i<len; i++)
{
e[i]=e[i]+a[i]+b[i];
e[i+1]=e[i+1]+e[i]/10;
e[i]=e[i]%10;
}
for(int i=M-1; i>=len; i--)
if(e[i])
++len;
}
int comp(int *c, int *d, int constlen, int len)
{
if(len<constlen)
return -1;
for(int i=len-1; i>=0; i--)
if(c[i]!=d[i])
return c[i]-d[i];
return 0;
}