输入n,计算S=1!+2!+3!+...+n!的 末6位(不含前导0)。n≤106,n!表示前n个正 整数之积。
样例输入:
10
样例输出:
37913
(25!末尾有六个零,所以往后的输出都一样)
int main()
{
const int Mod = 1000000;//常变量
int n,sum=0,p=1;
cin >> n;
for (int i = 1; i <= n; i++)
{
p *= i;//每个循环中阶乘的数,只有后六位数是正确的
p = p % Mod;//把计算后多出来的位数去掉
sum=(sum += p)%Mod;//同上
}
cout << sum << endl;
cout << (double)clock() / CLOCKS_PER_SEC << endl;
//在time.h下的clock()函数可以获取程序运行时间,在需要输入的时候
//计时会包括输入的时间,要避免这种情况可以使用命令行操作,注意一
// 定要配合 CLOCKS_PER_SEC常数使用,可以获得以秒为单位的时间
return 0;
}