#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