大数阶乘
题目:https://pintia.cn/problem-sets/14/problems/742
#include<cstdio>
#include<cstring>
#include<iostream>
void Print_Factorial ( const int N )
{
int a[100000];//存储每一位数
int dight,temp;//dight代表位数;temp代表暂时的值
a[0]=1;//0的阶乘,1的阶乘为1
dight=1;//初始化是一位数字
if(N<0)
{
printf("Invalid input\n");
return ;
}
for(inti=2;i<=N;i++)//N的阶乘
{
int num=0;
for(intj=0;j<dight;j++)
{
temp=a[j]*i+num;
num=temp/10;//进位的数
a[j]=temp%10;//余数
}
while(num!=0)
{
a[dight]=num%10;
num/=10;
dight++;
}
}
for(inti=dight-1;i>=0;i--)//逆序输出
printf("%d",a[i]);
printf("\n");
return;
}
int main()
{
int N;
scanf("%d",&N);
Print_Factorial(N);
return 0;
}