#include<stdio.h>
#include<time.h>
int main()
{
const int MOD=1000000;
int i,j,n,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
int factorial=1;
for(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);
}
在这个里面加入了一些技巧,避免溢出,程序的主要功能是输出后六位。
数论里面的一个结论:要计算只包含加法,减法和乘法表达式除以正整数n的余数,可以在每步计算之后对n 取模,结果不变!
转载于:https://blog.51cto.com/liu168ad/1335996