可以帮我看一下这个代码这样写的理由吗?

#include
#include
using namespace std;
int main()
{
const int MOD=1000000;
int n,s=0;
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
int factorial=1;
for(int j=1;j<=i;++j)
factorial=(factorial*j%MOD);
s=(s+factorial)%MOD;
}
printf("%d\n",s);
printf("Time used=%.2lf\n",(double)clock()/CLOCKS_PER_SEC);
return 0;
}


# 不太清楚这里:factorial=(factorial*j%MOD);
        s=(s+factorial)%MOD;
        这样输出出来是错的吧。
        比如factorial大于100000,那s的值不就不对了吗?

看题目怎么要求的,有些为了防止上溢,题目就是要你取模

看这个code是求阶乘之和,这么MOD的作用就是一个max,最大值的意思。所以在输入的时候需要限定值不能大于这个MOD,也就是1000000