10183

#include <iostream>

#include <string>
#include <vector>
#include <string.h>

using namespace std;

int fib[600][1000];
vector <int> fibo[600];

int iSBig(int i,string s)
{
if(fibo[i].size()>s.size())
return 1;
if(fibo[i].size()<s.size())
return 0;

for(int j=0;j<s.size();j++)
{
if((s[j]-'0')<fibo[i][j])
{
return 1;
}
if((s[j]-'0')>fibo[i][j])
{
return 0;
}
}
return 1;
}

int iSSmall(string s,int i)
{
if(fibo[i].size()>s.size())
return 0;
if(fibo[i].size()<s.size())
return 1;

for(int j=0;j<s.size();j++)
{
if((s[j]-'0')<fibo[i][j])
{
return 0;
}
if((s[j]-'0')>fibo[i][j])
{
return 1;
}
}
return 1;
}

int main()
{
string str,str1;
//fib[0][0]=0;
fib[0][0]=1;
fib[1][0]=2;
fibo[0].clear();
fibo[1].clear();
//fibo[2].clear();
int c=0;
for(int i=2;i<510;i++)
{
fibo[i].clear();
for(int j=0;j<1000;j++)
{
int temp = (fib[i-1][j]+fib[i-2][j]+c);
fib[i][j]=temp%10;
c=temp/10;
}
}

fibo[0].push_back(0);
for(int i=1;i<510;i++)
{
int f=0;
for(int j=999;j>=0;j--)
{
if(f)
{
fibo[i].push_back(fib[i][j]);
continue;
}
if(fib[i][j])
{
f=1;
fibo[i].push_back(fib[i][j]);
}
}
}

//for(int i=0;i<fibo[502].size();i++)

while(cin>>str)
{
cin>>str1;

if(str=="0" && str1=="0")
break;
int cnt=0;
int fl=0;
for(int i=0;i<501;i++)
{
fl=0;
if(fibo[i].size()>str1.size())
break;
if(fibo[i].size()<str.size())
continue;
if(fibo[i].size()>str.size() && fibo[i].size()<str1.size())
{
cnt++;
continue;
}
if(iSBig(i,str)==1 && iSSmall(str1,i)==1)
{
cnt++;
}
}
if(str=="1")
cout<<cnt+1<<"\n";
else
cout<<cnt<<"\n";
}

return 0;
}

 

Leave a Reply

Your email address will not be published. Required fields are marked *