大数阶乘运算
Jimmy
posted @ 2011年9月14日 16:55
in Others
, 1453 阅读
使用数组存储最终结果,并模拟进位
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 1000
int main()
{
int data[MAXSIZE+1];
int digit ;
int i,j,r,k;
int n;
while(scanf("%d",&n) != EOF)
{
for(i=1;i<=MAXSIZE;i++)
data[i] = 0;
data[1] = 1;
digit = 1;
for(i=1; i<=n; i++)
{
for(j=1;j<=digit;j++)
data[j] *= i;
for(j=1;j<=digit;j++)
{
if(data[j] > 10)
{
for(r=1;r<=digit;r++)
{
if(data[digit] > 9)
digit++;
data[r+1] += data[r]/10;
data[r] = data[r]%10;
}
}
}
}
for(k=digit;k>0;k--)
printf("%d",data[k]);
printf("\n");
}
return 0;
}