大数的存储与输出
模拟笔算法:例如在算阶乘的时候,17!远远超过了int的范围,于是在存储这个结果的时候,每乘一次,就把数据存储进去,把大于10的数据向后进位。
储存完毕后,将数据倒序输出,就可以把很大的数据输出出来。
实现代码:
int n,i,k,j,num[40000],len;
while(scanf("%d",&n)!=EOF)
{
int num[40000]={1};
len=1;
for(i=2;i<=n;i++)
{
for(j=0;j<36000;j++)
num[j]*=i;
for(j=0;j<36000;j++)
if(num[j]>=10)
{
num[j+1]+=num[j]/10;
num[j]=num[j]%10;
len++;
}
}
for(i=len;i>=0;i--)
if(num[i]!=0)
{
len=i;
break;
}
for(i=len;i>=0;i--)
printf("%d",num[i]);
printf("\n");
}