#include<bits/stdc++.h> using namespace std; string he(string s1,string s2){ int a[2500],b[2500],c[2500]={0}; string r; //逆序 for(int i=0;i<s1.size();i++) a[i]=s1[s1.size()-1-i]-'0'; for(int i=0;i<s2.size();i++) b[i]=s2[s2.size()-1-i]-'0'; //算相加的长度 int len=max(s1.size(),s2.size()); //相加 for(int i=0;i<len;i++){ c[i]=a[i]+b[i]; if(c[i]>=10){ c[i+1]+=c[i]/10; c[i]%=10; } } //判断第len位是不是0 if(c[len]!=0) len++; //倒序输出 for(int i=len-1;i>=0;i--){ r=r+(char)(c[i]+'0'); } return r; } string ji(string s){ string r; int a[2500],c[2500]={0}; for(int i=0;i<s.size();i++){ a[i]=s[s.size()-1-i]-'0'; } int len=s.size(); for(int i=0;i<len;i++){ c[i]=a[i]*2; if(c[i]>=10){ c[i+1]=c[i+1]+c[i]/10; c[i]=c[i]%10; } } if(c[len]!=0) len++; for(int i=len-1;i>=0;i--){ r=r+(char)(c[i]+'0'); } return r; } int main(){ long long n; string x,y,z; cin>>n; x="1"; y="2"; if(n==1) cout<<x; else if(n==2) cout<<y; else{ for(int i=3;i<=n;i++){ z=he(ji(y),x); x=y; y=z; } cout<<z; } return 0; } /************************************************************** Problem: 1369 User: hulaoshi Language: C++ Result: Wrong Answer ****************************************************************/