标签:
描述我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?
#include<stdio.h>
#include<math.h>
int a[6800];
int wu(int j)//判断要用到的数组个数
{
int i,s;s=j;
for(i=0;i<1000;i++)
if(a[j+i+1]!=0)
break;
if(i==1000)
return(0);
else return(1);
}
int bei(int n,int j,int c)//利用递归原理对每一位进行计算
{
int m,i,k;
a[j]=a[j]*n+c;
c=a[j]/10000;
a[j]=a[j]%10000;
if(wu(j)||c!=0)
return(bei(n,j+1,c));
else return(j);
}
main()
{
int i,j,k,m;
scanf("%d",&m);
a[0]=1;
for(i=1;i<=m;i++)
k=bei(i,0,0);
printf("%d",a[k]);
for(i=k-1;i>=0;i--)//输出要相应的补零
{if(a[i]<10000&&a[i]>999)
printf("%d",a[i]);
else if(a[i]<1000&&a[i]>99)
printf("0%d",a[i]);
else if(a[i]<100&&a[i]>9)
printf("00%d",a[i]);
else
printf("000%d",a[i]);}
putchar(‘\n‘);
}
标签:
原文地址:http://www.cnblogs.com/beike303603/p/4591928.html