阶乘的精确值
2014-07-01 22:43
127 查看
#include <stdio.h> #include <string.h> const int maxn=3000; int f[maxn]; int main() { int i,j,n; scanf("%d",&n); memset(f,0,sizeof(f)); f[0]=1; for(i=2;i<=n;i++)//i相当于阶乘的第n个数 { int c=0; for(j=0;j<maxn;j++) { int s=f[j]*i+c;//模拟手算,s为本位与i相乘的结果加低位进位c f[j]=s%10;//新的本位 c=s/10;//进位 } } for(j=maxn-1;j>=0;j--)if(f[j])break;//找出非零最高位,忽略前导零 for(i=j;i>=0;i--)printf("%d",f[i]); printf("\n"); return 0; }