阶乘的精确值
输入不超过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 }