加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

南阳oj 大数阶乘 题目28

发布时间:2020-12-14 02:21:04 所属栏目:大数据 来源:网络整理
导读:?? 啊啊啊啊啊啊啊啊啊学的太少了 h2大数阶乘/h2div class="problem-ins" 时间限制:span class="editable highlight" id="problem[time_limit]"3000/span ms ?|? 内存限制:span class="editable highlight" id="problem[memory_limit]"65535/span KB /divd
??
啊啊啊啊啊啊啊啊啊学的太少了
<h2>大数阶乘</h2><div class="problem-ins"> 时间限制:<span class="editable highlight" id="problem[time_limit]">3000</span> ms ?|?           内存限制:<span class="editable highlight" id="problem[memory_limit]">65535</span> KB </div><div class="problem-ins">难度:<span class="editable highlight">3</span></div><div class="clr"></div><dl class="problem-display"><dt>描述 </dt><dd>我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?</dd><div class="clr"></div><dl class="others"><dt>输入</dt><dd>输入一个整数m(0<m<=5000)</dd><dt>输出</dt><dd>输出m的阶乘,并在输出结束之后输入一个换行符</dd><dt>样例输入</dt><dd><pre id="sample_input">50
样例输出
30414093201713378043612608166064768844377641568960512000000000000
来源
经典题目
上传者
张云聪
 
 
 
#include<iostream>
#include<iomanip>
using namespace std;
//存储20000以内的阶乘
int a[15470];       //用数组来存储结果,每个元素存一个五位数
int main()
{
    int n;
    cin>>n;
    a[1]=1;       
    a[0]=1;       //这个a[0]是个计数器,记录五位数的个数
    int up;       //向前一个五位数的进位
    for(int i=2;i<=n;++i)         //从2到n的乘数
    {                             
        up=0;                    //乘完每个乘数进位归零
        for(int j=1;j<=a[0];++j)   //已有数值位参与运算
        {
            a[j] *=i;             //每一个五位数乘以乘数
            a[j] +=up;            //加上进位
            up=a[j]/100000;        //计算下一个进位
            a[j] %=100000;         //当前五位数的值
        }
        if(up!=0)
        {
            a[0]++;                //若有进位,计数器加一
            a[a[0]]=up;            //存放进位
        }
    }
    if(a[0]==1) cout<<a[1];
        else
        {
            cout<<a[a[0]];
            for (int i=a[0]-1;i>0;i--)
            {     
                cout<<setfill('0')<<setw(5)<<a[i];  //补足五位数
            }
        }
}

??

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读