(编译环境Dev-C++ 5.11)
/*
** 计算 S=1!+2!+3!+4!+...+n! 的末6位(不含前导0)。(n<=10^6)
*/
#include<stdio.h>
#include<time.h>
int main()
{
int n;
long long sum = 0LL;
long long temp = 1LL;
scanf("%d", &n);
for(int i = 1; i<= n; i++)
{
temp = (temp * i) % 1000000;
sum = (sum + temp) % 1000000;
//printf("temp = %06d, sum = %d\n", temp, sum);
}
printf("%d\n", sum);
//输出程序运行时间
printf("time = %.2fs", (double)clock() / CLOCKS_PER_SEC);
return 0;
}
// 若改为 if(n>25) n = 25; 效率和溢出都将不会存在问题