阶乘数字总和(不含 BigInt)C++

Factorial digit sum (without BigInt) C++

本文关键字:BigInt C++ 不含 数字 阶乘      更新时间:2023-10-16

我正在试图弄清楚如何解决这个问题(欧拉项目):

n! 表示 n × (n − 1) × ... × 3 × 2 × 1

例如,10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800,以及 数字 10 中的数字!为 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27。

找到数字 100 中的数字之和!

使用

BigInt 不是一种选择,我正在尝试弄清楚如何仅使用 c++ 实现解决方案。

我想也许将大数字拆分为大约 7 位长的数组或类似的东西,然后处理它们,但我仍然不知道该怎么做。.

提前感谢!

试试这个

#include "iostream"
#include "vector"
int n,remainder,sum;
int main ()
{   
    std::vector <int> digits(5000);    
    std::cin>>n;    
    digits[0]=1;
    digits[1]=1;
    for (int k=2;k<n+1;k++) {
        for (int i=1;i<=digits[0];i++) {
            digits[i]=digits[i]*k+remainder;
            remainder=0;
            if (digits[i]>9) {
                remainder=digits[i]/10;
                digits[i]%=10;
                if (i==digits[0])
                digits[0]++;
            }
        }
    }   
    for (int i=digits[0];i>=1;i--)
        sum+=digits[i];
    std::cout<<sum;
}