题目的数据给的有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; }