阶乘之和取模 (25 分)
输入正整数n, 计算S = 1!+2!+...+n!的末6位(不含前导0). 这里1<=n<=109.
输入样例:
例如输入:
20
输出样例:
输出:
820313
题解:我看道这个题的第一想法就是用暴力求解,但是最后一组数据时间超限了,然后我就打了一个表,发现当n>=24时,后面六位数都是一样的。所以就有了下面这个代码。
#include
#include
#include
using namespace std;
int main()
{
long long n,sum=0,tmp=1;
scanf("%lld",&n);
if(n>=24) //当n>=24时,后面的数据都是一样的
{
printf("940313\n");
return 0;
}
for(long long i=1;i<=n;i++)
{
sum=(sum+tmp)%1000000;
tmp=(tmp*((i+1)%1000000))%1000000;
}
cout<
return 0;
}
View Code
标签:24,取模,样例,long,PTA,阶乘,include
来源: https://www.cnblogs.com/buhuiflydepig/p/10618287.html