NYOJ-28-大数阶乘

来源:互联网 发布:手机淘宝红包设置 编辑:程序博客网 时间:2024/06/01 15:22

大数阶乘

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述
我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?
输入
输入一个整数m(0<m<=5000)
输出
输出m的阶乘,并在输出结束之后输入一个换行符
样例输入
50
样例输出
30414093201713378043612608166064768844377641568960512000000000000

#include <stdio.h>#include <string.h>#include <string>#include <math.h>#include <stdlib.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include<queue>#include<stack>using namespace std;int a[10000];int main(){int  n;while(~scanf("%d",&n)){int digit=1;int res,sum;int i,j,k;a[0]=1;for(i=2;i<=n;i++){for(res=0,j=1;j<=digit;j++){sum=a[j-1]*i+res;a[j-1]=sum%10;res=sum/10; }while(res){digit++;a[digit-1]=res%10;res/=10;}}for(k=digit;k>=1;k--){printf("%d",a[k-1]);}cout<<endl;} return 0;}



0 0
原创粉丝点击