NYOJ 大数阶乘问题

来源:互联网 发布:椰族部落永久域名入口 编辑:程序博客网 时间:2024/05/01 23:22

大数阶乘

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述
我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?
输入
输入一个整数m(0<m<=5000)
输出
输出m的阶乘,并在输出结束之后输入一个换行符
样例输入
50
样例输出
30414093201713378043612608166064768844377641568960512000000000000
#include<stdio.h>#include<string.h>#define N 20000//保存的阶乘总位数用log先算int main(){int a[N],i,j,n,s,v,len=1;scanf("%d",&n);memset(a,0,sizeof(a));a[0]=1;for(i=1;i<=n;i++){v=0;for(j=0;j<len;j++){s=a[j]*i+v;a[j]=s%10;v=s/10;if(v>0&&j==len-1)len++;}}for(i=len-1;i>=0;i--)//倒过来输出printf("%d",a[i]);printf("\n");return 0;}

1 0
原创粉丝点击