这题一开始我想了又想,谁知道最后竟然一个暴力的高精度过了,官方的题解好像是用了一些数学的方法。
/* ID:abc31261 LANG:C++ TASK:fact4 */ #include<cstdio> #include<cstring> #include<iostream> using namespace std; const int maxn=5000; int num[maxn],len; void cheng(int numa) { int i,x=0; for (i=1;i<=len;i++) { num[i]=num[i]*numa+x; x=num[i]/10; num[i]=num[i]%10; } while (x!=0) { num[++len]=x%10; x=x/10; } } int main() { long long i,n; freopen("fact4.in","r",stdin); freopen("fact4.out","w",stdout); cin>>n; len=num[1]=1; for (i=2;i<=n;i++)cheng(i); for (i=1;num[i]==0 && i<=len;i++){} cout<<num[i]<<endl; return 0; }