51NOD 1057 N的阶乘

时间:2023-03-09 02:36:30
51NOD 1057  N的阶乘
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
输入N求N的阶乘的准确值。
Input
输入N(1 <= N <= 10000)
Output
输出N的阶乘
Input示例
5
Output示例
120
#include <bits/stdc++.h>
#define clear(a) memset(a,0,sizeof(a))
using namespace std;
typedef long long ll;
const int mod = 1e8;
ll s[]; int main ()
{
int n;
while (~scanf("%d",&n) )
{
clear(s);
int m =;
s[] = ;
for(int i=;i <= n;i++)
{
int c = ;//c表示最高位所留下的 相当于模拟乘法把
for(int j=;j <= m;j++)
{
s[j] = s[j]*i + c;
c = s[j] /mod;
s[j] %= mod;
}
if(c > )
{
m++;
s[m] = c;
}
}
printf("%lld",s[m]);
for(int i=m-;i >= ;i--)
printf("%08lld",s[i]);
puts("");
}
return ;
}

阶乘模拟