51nod 1057 N的阶乘 (大数运算)

时间:2023-03-09 13:32:57
51nod 1057 N的阶乘 (大数运算)
输入N求N的阶乘的准确值。
Input
输入N(1 <= N <= 10000)
Output
输出N的阶乘
Input示例
5
Output示例
120

压位: 每个数组元素存多位数字
 #include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cmath>
using namespace std;
#define pi 3.1415926
#define e 2.718281828459
#define ll long long
const int mod=1e8;
const int N=;
int main()
{
int n,i,j,m;
ll a[N]={},c;
scanf("%d",&n);
m=;
for(i=;i<=n;i++){
c=;
for(j=;j<=m;j++){
a[j]=a[j]*i+c;
c=a[j]/mod;
a[j]%=mod;
}
if(c>){
m++;
a[m]=c;
}
}
printf("%lld",a[m]);
for(i=m-;i>=;i--)
printf("%08lld",a[i]);
printf("\n");
return ;
}