正整数N(0<=N<=1000)
输入可能包括多组数据,对于每一组输入数据,输出N的阶乘
24 120 1307674368000
代码:
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
int a[3000];
int n;
while(cin>>n)
{
int t=0;
for(int i=0;i<3000;i++)
a[i]=0;
a[0]=1;
for(int i=1;i<=n;i++)///算n的阶乘
{
int k=0;
for(int j=0;j<=t;j++)
{
int r=(a[j]*i+k)/10;
a[j]=(a[j]*i+k)%10;
k=r;
}///这个循环是将之前算的积和下一个数乘起来
while(k)
{
a[++t]=k%10;
k=k/10;
}///算完最后一位的乘法后,位数可能会增加
}
for(int i=t;i>=0;i--)
{
cout<<a[i];
}
cout<<endl;
}
return 0;
}
原文:https://www.cnblogs.com/zhanghuawei/p/11977340.html