大数阶乘

来源:互联网 发布:中兴v880软件下载 编辑:程序博客网 时间:2024/06/15 21:53

大数阶乘

时间限制:3000 ms | 内存限制:65535 KB
难度:3

描述
我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?

输入
输入一个整数m(1<=m<=5000)
输出
输出m的阶乘,并在输出结束之后输入一个换行符
样例输入

50

样例输出

30414093201713378043612608166064768844377641568960512000000000000

解析:
大数类一般都是运用数组来储存数的每一位;

代码:

#include<iostream>#include<cstdio>#include<cstring>#define N 20000using namespace std;int fac[N];int main(){    int s,m,flag=0;    scanf("%d",&m);    memset(fac,0,sizeof(fac));              ///初始化数组为0;    fac[0]=1;    for(int i=2; i<=m; i++)    {        flag=0;        for(int j=0; j<N; j++)        {            s=fac[j]*i+flag;                ///flag 为进位标志 ;            fac[j]=s%10;            flag=s/10;        }    }    for(int j=N-1;j>=0;j--)        if (fac[j])            break;                          ///除去前导0;    for(int ;j>=0;j--)                      ///将数组倒序输出;        printf("%d",fac[j]);                    printf("\n");    return 0;}
原创粉丝点击