Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- string fib[20000];
- string addition(string s1,string s2)
- {
- if(s1.length()>s2.length())
- swap(s1,s2);
- int i,j,k,len1,len2,carry=0,sum=0;
- string ans="";
- 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!=0)
- {
- ans.push_back(carry+'0');
- }
- reverse(ans.begin(),ans.end());
- return ans;
- }
- string fibo(int n)
- {
- if(n==1 || n==2)
- return "1";
- if(fib[n]!="")
- return fib[n];
- return fib[n]=addition(fibo(n-1),fibo(n-2));
- }
- int main()
- {
- // freopen("in.txt","r",stdin);
- // freopen("out.txt","w",stdout);
- int n;
- while(cin>>n && n)
- {
- cout<<fibo(n*2)<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement