Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long int ll;
- string add(string s1,string s2)
- {
- int i,j,k,sum=0,carry=0,len1,len2;
- string ans="";
- if(s1.length()>s2.length())
- swap(s1,s2);
- reverse(s1.begin(),s1.end());
- reverse(s2.begin(),s2.end());
- len1=s1.length();
- len2=s2.length();
- for(i=0;i<len1;i++)
- {
- sum=(s1[i]-'0' + s2[i]-'0')+carry;
- ans.push_back(sum%10 + '0');
- carry=sum/10;
- }
- for(i=len1;i<len2;i++)
- {
- sum=(s2[i]-'0')+carry;
- ans.push_back(sum%10 + '0');
- carry=sum/10;
- }
- if(carry)
- {
- ans.push_back(carry + '0');
- }
- reverse(ans.begin(),ans.end());
- return ans;
- }
- bool check1(string fib,string a)
- {
- if(fib.size()<a.size())
- return false;
- if(fib.size()>a.size())
- return true;
- if(fib>=a)
- return true;
- return false;
- }
- bool check2(string fib,string a)
- {
- if(fib.size()<a.size())
- return false;
- if(fib.size()>a.size())
- return true;
- if(fib>a)
- return true;
- return false;
- }
- int main()
- {
- string fibs[1005];
- fibs[1]="1";
- fibs[2]="2";
- for(ll i=3;i<1000;i++)
- {
- fibs[i]=add(fibs[i-1],fibs[i-2]);
- }
- string a,b;
- while(cin>>a>>b)
- {
- if(a=="0" && b=="0")
- break;
- ll low,hi;
- for(ll i=1;i<1000;i++)
- {
- if(check1(fibs[i],a)==true)
- {
- low=i;
- break;
- }
- }
- for(ll i=1;i<1000;i++)
- {
- if(check2(fibs[i],b)==true)
- {
- hi=i;
- break;
- }
- }
- cout<<hi-low<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement