基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
收藏
关注
输入N求N的阶乘的准确值。
Input
输入N(1 <= N <= 10000)
Output
输出N的阶乘
Input示例
5
Output示例
120
代码:
#include <bits/stdc++.h>
#define mod 10000000
using namespace std;
long long a[10000];
int Count(int n)
{
int i,j,num=0;
long long t=1,k;
a[0]=1;
for(i=1; i<=n; ++i)
{
k=0;
for(j=0; j<=num; ++j)
{
t=a[j]*i+k; //由a来保存每次相乘后来自低位的进位和本位乘法和
a[j]=t%mod;
k=t/mod;
}
if(k)
{
a[++num]=k;
}
}
return num;
}
int main()
{
int n;
cin>>n;
int m=Count(n);
for(int i=m; i>=0; i--)
{
if(i==m)
printf("%d",a[i]);
else
printf("%07d",a[i]);
}
cout<<endl;
return 0;
}