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