2803 爱丽丝·玛格特罗依德
时间限制: 4 s
空间限制: 8000 KB
题目等级 : 黄金 Gold
查看运行结果
题解:
小学奥数……?
多拆出3 要不就是2 听AC代码:
#include#include int n,a[2000];inline void mul(int t){ int j=0; for(int i=1;i<=a[0]+1;i++){ a[i]=a[i]*t+j; j=0; if(a[i]>=100000000){ j=a[i]/100000000; a[i]=a[i]%100000000; } } if(a[a[0]+1]>0) a[0]++;}inline void zero(int p){ for(int q=8-log10(p);q;q--) printf("0");}int main(){ scanf("%d",&n); if(n<=4) printf("%d",n); else{ a[1]=3; a[0]=1; if(n%3==0) for(int k=n/3-1;k>0;k--) mul(3); if(n%3==1){ for(int k=(n-4)/3-1;k>0;k--) mul(3); mul(2); mul(2); } if(n%3==2){ for(int k=(n-2)/3-1;k>0;k--) mul(3); mul(2); } printf("%d",a[a[0]]); for(int k=a[0]-1;k>=1;k--){ zero(a[k]); printf("%d",a[k]); } } return 0;}