1 //大数阶乘问题 模拟手算的过程 用数组存储每一位数 有进位s
2 #include<stdio.h>
3 int main()
4 {
5
6 int m,i,j;
7 while(~scanf("%d",&m))
8 {
9 int f[20000]={0};//初始化为0
10 f[0]=1;
11 for( i=1;i<=m;i++)
12 {
13 int c,s=0;
14 for( j=0;j<20000;j++)// 不知道何时结束 有点耗时 每次都要到20000次运算
15 {
16 c=f[j]*i+s;//每次的f[0]会被更新1 2 6 ...
17 f[j]=c%10;//每一位都存进f数组 从低位到高位
18 s=c/10;//进位数
19 }
20 }
21 for( i=19999;i>=0;i--)
22 if(f[i]!=0)//删除前导0
23 break;
24 //printf("i=%d\n",i);
25 for(j=i;j>=0;j--)
26 printf("%d",f[j]);
27 printf("\n");
28 }
29 return 0;
30 }