洛谷题解P1009 阶乘之和

作者: 海天一树X | 来源:发表于2019-03-25 18:22 被阅读1次

实现代码:

#include<iostream>
using namespace std;

int a[2000];
int c[2000];
const int maxDigit=1000; //最大位数,调试时可设n=4,maxDigit=3

// 阶乘相加
void add(int *a,int *c)
{
    int carry = 0;
    // 比如1!+2!+3!+4!
    // i=1时,c[1]=1!=1
    // i=2时,c[1]=1+2!=3
    // i=3时,c[1]=3+3!=9
    // i=4时,c[1]=9+4=13,carry=1,c[1]=3,c[2]=c[2]+a[2]+carry=0+2+1=3
    for(int i = 1; i <= maxDigit; i++)
    {
        c[i] += (a[i] + carry);
        carry = c[i]/10;
        c[i] %= 10;
    }
}

//求阶乘
void fact(int *a,int num)
{
    int carry = 0; // 进位
    for(int i=1; i <= maxDigit; i++)
    {
        // 从高位往低位存储数据,比如5!=120,则a[4]=a[5]=...=0,a[3]=1,a[2]=2,a[1]=0
        a[i] = a[i] * num + carry;
        carry = a[i] / 10;
        a[i] %= 10;
    }
}

int main()
{
    int n;
    cin >> n;
    a[1] = 1;
    for(int i=1;i<=n;i++)
    {
        fact(a, i);
        add(a, c);
    }

    bool flag = false; // 当碰到第一个非0时,更新为true
    for(int i = 1000; i >= 1; i--)
    {
        // 左边的0不要打印出来,从第一个非0数字开始打印
        // 比如000……000120,打印出120
        if(c[i] != 0)
        {
            flag = true;
        }

        if(flag)
        {
            cout << c[i];
        }
    }

    return 0;
}

少儿编程、算法咨询请加微信307591841或QQ群581357582


信息学竞赛公众号.jpg

相关文章

  • 洛谷题解P1009 阶乘之和

    实现代码: 少儿编程、算法咨询请加微信307591841或QQ群581357582信息学竞赛公众号.jpg

  • [NOIP] - 阶乘之和

    题目描述 用高精度计算出S=1!+2!+3!+…+n! (n≤50)S=1!+2!+3!+…+n!(n≤50) 其...

  • [Pyhton]阶乘之和

    一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作...

  • 求阶乘之和

    1.题目描述求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。 2.格式与样例...

  • 洛谷P1025题解

    题目链接:洛谷P1025 题目描述 将整数分成份,且每份不能为空,任意两个方案不相同(不考虑顺序)。 例如:,下面...

  • 洛谷P1002题解

    少儿编程咨询、算法咨询请加微信307591841或QQ群581357582诺依曼算法公众号.jpg

  • 2018 CCF NOIP Junior 题解

    2018 CCF NOIP Junior 题解 标题统计 洛谷自测 P5015 牛客网自测 277A 给定一个字符...

  • [算法]第 3 天 双指针

    283. 移动零 题解 Swift 167. 两数之和 II - 输入有序数组 题解 Swift Git[http...

  • 自学Python:求多项式之和

    用python求解下图多项式之和 观察每一项分式的分母都是对应项标记的阶乘。所以只要求出每一项的阶乘再将其倒数和加...

  • 洛谷P1141 01迷宫 题解

    一条搜索水题,竟然交了10次才a...还是太菜了,怒献一篇题解,思路是记忆化dfs+剪枝。先看一下题目:(截图拼接...

网友评论

    本文标题:洛谷题解P1009 阶乘之和

    本文链接:https://www.haomeiwen.com/subject/boibvqtx.html