题解:
高精度乘法+数论
小学数学都学过把
每次分解成的3越多越好
很小的时候特判一下
代码:
#include<bits/stdc++.h> using namespace std; int ans[10005],len,n; void cf(int x) { for (int i=1;i<=len;i++)ans[i]*=x; for (int i=1;i<=len;i++) { ans[i+1]+=ans[i]/10; ans[i]%=10; } if (ans[len+1]>0)len++; } int main() { len=1;ans[1]=1; scanf("%d",&n); for (;n>5;n-=3)cf(3); if (n<=4)cf(n); if (n==5)cf(6); printf("%d\n",len); for (int k=0;len;k++,len--) { if (k==100)break; printf("%d",ans[len]); } }