标签:
题解:
小学奥数……?
多拆出3 要不就是2
听题解说是这样的
顺带一提,高精度(+压位)
AC代码:
#include<cstdio> #include<cmath> 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; }
标签:
原文地址:http://www.cnblogs.com/shenben/p/5878105.html