-
描述
-
我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?
-
输入
- 输入一个整数m(0<m<=5000) 输出
- 输出m的阶乘,并在输出结束之后输入一个换行符 样例输入
-
50
样例输出
-
30414093201713378043612608166064768844377641568960512000000000000
#include "stdio.h"
#define maxn 18000
int a[maxn];
int main()
{
int m,i,index,c; // 0<m<=5000 ,m=5000时数据有 16326 位数据
scanf("%d",&m);
a[0]=1; index=0; m++;
if(m>=0 && m<=5000){
while(--m)
{
c=0;
for(i=0;i<=index;i++)
{
c=m*a[i]+c;
a[i]=c%10; c/=10;
}
while(c) {a[++index]=c%10;c/=10;}
}
}
for(i=index;i>=0;i--)
printf("%d",a[i]);
printf("\n");
return 0;
}
算法思路 形如小学生算式计算