#include <cstdio> #include <string.h> using namespace std; const int maxn=50000; int f[maxn]; int main() { int i,j,n; while(scanf("%d",&n)!= EOF) {memset(f,0,sizeof(f)); f[0]=1; //先让个位为1 for(i=2;i<=n;i++) //从2一直乘到n { int c=0; //c保留进位数 for(j=0;j<maxn;j++) //遍历f数组 { int s=f[j]*i+c; //计算每一位的值 f[j]=s%10; //每次乘后更新数组的值 c=s/10; //c保留进位数 } } for(j=maxn-1;j>=0;j--) //忽略前导0 if(f[j]) break; for(i=j;i>=0;i--) //输出 printf("%d",f[i]); printf("\n"); } return 0; }
数组开50000,感觉自己真正融入在题目中的时候才能做出来