阶乘之和

来源:互联网 发布:php empty 0 编辑:程序博客网 时间:2024/06/03 21:45

阶乘之和
输入n,计算S=1!+2!+3!+…+n!的末6位(不含前导0,前导0表示按需求必须为x位数,不足部分前面补0 )。n<=10^6。这里,n!表示前n个正整数之积。

Input
n(n<=10^6)

Output
S=1!+2!+3!+…+n!的末6位

Sample Input
10

Sample Output
37913

注意事项:
1.在循环体开始处定义的变量,每次执行循环体时会重新声明并初始化。
2.要计算只包含加法、减法和乘法的整数表达式除以正整数n的余数,可以在每步计算之后对n取余,结果不变。
3.取某数的末x位就是mod 10^x。

代码:

#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<algorithm>//#include<time.h>  //"计时器"using namespace std;const int MOD=1000000; //常量定义,改善了程序的可读性,也方便修改 int main(){    int i,j,n,S=0;    scanf("%d",&n);    for(i=1;i<=n;i++)    {        int cnt=1;     //注意累乘器cnt定义在循环里面,即每执行一次循环体,都要重新声明一次cnt并初始化为1         for(j=1;j<=i;j++)        {            cnt=cnt*j%MOD;        }        S=(S+cnt)%MOD;   //因为只要末6位,所以输出时对10^6取模    }    printf("%d\n",S);      //printf("Time used =%.2lf\n",(double)clock()/CLOCKS_PER_SEC);     return 0;} 

这里写图片描述

这里写图片描述