NYOJ 28 大数阶乘

来源:互联网 发布:淘宝店铺换行业影响 编辑:程序博客网 时间:2024/06/08 02:46
我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?
输入
输入一个整数m(0<m<=5000)
输出
输出m的阶乘,并在输出结束之后输入一个换行符
样例输入
50
样例输出

30414093201713378043612608166064768844377641568960512000000000000


#include <iostream>using namespace std;int main(){    int a[5000]={0};    int n;    while(cin>>n)    {        a[0]=1;        int len=0;        int value;    //每一位的数值        int carry=0;  //进位                for(int i=2; i<=n; i++)        {            for(int j=0; j<=len; j++)            {                value=a[j]*i+carry; //每一位的运算结果                a[j]=value%10;       //将最低位保留在原位置                carry=value/10;     //计算进位                                if(carry!=0&&j==len)  //当j循环到最后一位时,仍然有进位                {                    len++;            //已存放数据的数组后面长度+1来存放最后一个进位数                }            }        }        for(int i=len; i>=0; i--)//输出        {            cout<<a[i];        }        cout<<endl;    }    return 0;}


原创粉丝点击