过不去"“阶乘之和”

输入n,计算S=1!+2!+3!+…+n!的末6位(不含前导0)。n≤106, n!表示前n个正整数之积。
【数据范围】

对于所有数据,1≤n≤999999
c++程序


#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

const int N = 100010;

int a[N],sum[N];

//该函数使数组进位
void carry (int s[])
{
    for (int i = 0; i < N; i++ )
    {
        if(s[i] >= 10)
        {
            s[i+1] += s[i]/10;
            s[i] %=10;
        }
    }
}
 
int main()
{
    int n;
    cin >> n;
    a[0] = 1;
    sum[0] =1;
    for (int i = 2; i <= n; i++ )
    {
        for (int j = 0; j < N; j++ )
        {
            a[j] *=  i;
            sum[j] += a[j]; 
        }
        carry(a);
        carry(sum);
    }
    
   //从后往前输出
    bool flag = true;
    for(int i=N;i>=0;i--)
    {
        if(flag && !a[i]) continue;
        else
        {
            flag = false;
            cout << sum[i];
        }
    }
    puts("");
    return 0;
}


#include <iostream>
using namespace std;
int main()
{
int n,sum=0;
cin>>n;
for(int i=1;i<=n;i++)
{
sum=sum+i;
if(sum>=1000000)
sum=sum%1000000; //要是sun大于六位数,就取余1000000
}
cout<<sum<<endl;
return 0;
}

求阶乘之和后六位_xu728522337的博客-CSDN博客 输入整数n(n&lt;1000000),计算S = 1!+2!+3!+···+的末六位。样例输入:10样例输出:37913#include &lt;iostream&gt;using namespace std;int main(){ int S = 0; int n; cin&gt;&gt;n; int MOD = 1000000; for(int ... https://blog.csdn.net/qq_37025185/article/details/79796291

img