/*
题目要求:输入不超过1000的正整数n,输出n!=1*2*3*...*n的精确结果
样例输入:30
输出:265252859812191058636308480000000
*/
#include<stdio.h>
#include<string.h>
const int maxn = 3000;
int f[maxn];
int main()
{
int i, j, n;
scanf("%d", &n);
memset(f, 0, sizeof(f));
f[0] = 1;
for(i=2; i<=n; i++)
{
int c=0;
for(j=0; j<maxn; j++)
{
int s=f[j] * i + c;
f[j] = s%10;
c = s/10;
}
}
for(j=maxn-1; j>=0; j--)
{//忽略前导0
if(f[j])
break;
}
for(i=j; i>=0; i--)
{
printf("%d", f[i]);
}
printf("\n");
return 0;
}
阶乘的精确值
最新推荐文章于 2022-03-22 17:02:44 发布