#include <iostream> #include <algorithm> using namespace std; const int N(100); struct bign{ int num[N]; }; bign f[200]; void dp(bign &x,bign &y) { y.num[1]+=1; for(int i=1;i<=y.num[0];i++) y.num[i]*=2; for(int i=1;i<=y.num[0];i++) { y.num[i+1]+=y.num[i]/10; y.num[i]%=10; } if(y.num[y.num[0]+1]) y.num[0]++; copy(y.num,y.num+y.num[0]+1,x.num); } int main() { int n; cin>>n; for(int i=0;i<N;i++) { fill(f[i].num,f[i].num+N,0); f[i].num[0]=1; } for(int i=1;i<=n;i++) dp(f[i],f[i-1]); for(int i=f[n].num[0];i>=1;i--) cout<<f[n].num[i]; cout<<endl; } /************************************************************** Problem: 2271 User: admin Language: C++ Result: Accepted Time:47 ms Memory:2152 kb ****************************************************************/