原题链接:点我转移
#include<cstdio> #include<iostream> #include<cstring> #include<cmath> using namespace std; int a[10000]; int main() { int n; while(cin>>n) { memset(a,0,sizeof(a)); a[1]=1; int lenc=1,i,j,x=0; while(n>0) { for(j=1; j<=lenc; j++) { a[j]*=2;///每一位都乘2 a[j]+=x;///加上低位的进位的数 x=0;///进位清0 if(a[j]>9)///如果改位大于0,进行进位 { x=a[j]/10; a[j]%=10; } if(j==lenc&&x!=0) lenc++;///让数组长度加一,当到最高位时但余数部位0时 } n--; } for(i=lenc; i>=1; i--) cout<<a[i]; cout<<endl; } return 0; }