题目的数据给的有40000位左右,所以要缩进,数组每一位存储5位即10的5次方就进位
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int sum[8005];
int main()
{
int i,j,n;
while(cin>>n){
memset(sum,0,sizeof(sum));
sum[0]=1;
for(i=1;i<=n;i++){
for(j=0;j<=8004;j++)
sum[j]*=i;
for(j=0;j<=8004;j++){
if(sum[j]>=100000){
sum[j+1]+=sum[j]/100000;
sum[j]%=100000;
}
}
}
i=8004;
while(i--){
if(sum[i]!=0)
break;
}
cout<<sum[i];
i--;
for(;i>=0;i--){
printf("%05d",sum[i]);
}
cout<<endl;
}
return 0;
}