您的位置:首页 > 其它

阶乘的精确值

2012-11-30 10:09 211 查看
/*
题目要求:输入不超过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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: