阶乘的精确值

阶乘的精确值

输入不超过1000的正整数n,输出n!的精度结果。

样例输入:30

样例输出:265252859812191058636308480000000

 

 1 #include<cstdio>
 2 #include<string.h>
 3 
 4 #define maxn 3000
 5 
 6 int f[maxn];
 7 
 8 int main()
 9 {
10     int i,j,n,c;
11     int s;
12     scanf("%d",&n);
13     memset(f,0,sizeof(f));
14     f[0]=1;
15     for(i=2;i<=n;i++)
16     {
17         c=0;
18         for(j=0;j<maxn;j++)  //f[0]是个位,f[1]是十位,f[2]是百位,每一位只保存一个数字
19         {
20             s=f[j]*i+c;//每一位都乘以i
21             f[j]=s%10;//只存一位
22             c=s/10;//要加到高位的数
23         }
24     }
25     for(j=maxn-1;j>=0;j--)//忽略前导0
26     {
27         if(f[j])
28             break;
29     }
30     for(i=j;i>=0;i--)//因为f[0]是个位,所以逆序输出
31     {
32         printf("%d",f[i]);
33     }
34     printf("
");
35     return 0;
36 }
原文地址:https://www.cnblogs.com/youdiankun/p/3683938.html