nyoj 大数阶乘
2016-12-06 21:01
197 查看
[align=center]大数阶乘[/align]
[align=left]原题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=28[/align]
[align=left]描述 [/align]
我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?
输入输入一个整数m(0<m<=5000)输出输出m的阶乘,并在输出结束之后输入一个换行符样例输入
样例输出
[align=left]原题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=28[/align]
[align=left]描述 [/align]
我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?
输入输入一个整数m(0<m<=5000)输出输出m的阶乘,并在输出结束之后输入一个换行符样例输入
50
样例输出
30414093201713378043612608166064768844377641568960512000000000000
代码:
#include<stdio.h> #include<string.h> const int maxn=20000; 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; c=s/10;//记录进位 f[j]=s%10; } } for(j=maxn-1;j>=0;j--) if(f[j])//去除前面多余的0 break; for(i=j;i>=0;i--) printf("%d",f[i]); printf("\n"); }