题目描述:
输入n,计算s=1!+2!+3!+4!+...+n!的末六位不含(前导0).n<=10^6,n!表示前n个正整数之积.
样例输入:
10
样例输出:
37913
代码(1):
#include<stdio.h>
int main() {
int sum=0;
int i,j,n;
scanf("%d",&n);
for(i=1; i<=n; i++) {
int factorial=1;
for(j=1; j<=i; j++) {
factorial*=j;
}
sum+=factorial;
printf("%d\n",sum);
}
printf("%d\n",sum % 1000000);
return 0;
}
代码(2):
#include<stdio.h>
#include<time.h>
int main(){
const int MOD=1000000;
int n, S = 0;
int i, j;
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 = %.2f\n", (double)clock()/CLOCKS_PER_SEC);
return 0;
}