时间限制: 1000 ms 内存限制: 65536 KB
提交数: 42193 通过数: 10141
输入nn,计算S=1!+2!+3!+…+n!S=1!+2!+3!+…+n!的末66位(不含前导0)。n≤106n≤106, n!n!表示前nn个正整数之积。
输入nn。
如题述,之和。
10
37913
【数据范围】
对于所有数据,1≤n≤9999991≤n≤999999。
【代码】
#include#define N 1000000 int f[N]={0,1}; int main() { int i,j,n,s=0; scanf("%d",&n); for(i=2;i<=n;i++) { f[i]=f[i-1]*i; f[i]%=N; } for(i=1;i<=n;i++) { s=s+f[i]; s%=N; } printf("%d\n",s); return 0; }
如有错误,望指教!