输入n,计算s=1!+2!+3!+.........+n!的末6位(不含前导0)。n<=10^6,n!表示前n个正整数之积。
include<iostream>
using namespace std;
int main()
{
int mod=1000000;
int n,s=0,t=1; //t为阶乘i的值。
cin>>n;
cout<<endl;
if(n<=25) //由于25!末有6个0,故可以以25为界限。
{
for(int i=1;i<=n;i++)
{
int factorial=1;
for(int j=1;j<=i;j++)
factorial=(factorial*j%mod);
s=(s+factorial)%mod;
}
}
else
{
for(int i=1;i<=25;i++)
{
int factorial=1;
for(int j=1;j<=i;j++)
factorial=(factorial*j%mod); //取余数
s=(s+factorial)%mod;
}
}
cout<<s<<endl;
return 0;
}