描述
小明是初一的学生,他今天遇到了一道题。
这道题给出了一个n和p,让你求(1!+2!+3!+…+n!)modp的值。
可怜的小明算了一个小时都没算完,他已经崩溃了。
于是他找到了你,想让你帮忙解决这道疯狂的题。
输入
输入文件只有一行,包含两个正整数n和p。
输出
输出文件只有一行,即为式子的值。
输入样例 1
5 1000
输出样例 1
153
输入样例 2
7 10
输出样例 2
3
提示
数据范围限制
对于20%的数据,1≤n≤1000。
对于50%的数据,1≤n≤10000000。
对于100%的数据,1≤n≤10^16,1≤p≤10000000。
#include<bits/stdc++.h>
#include<iostream>
#include<iomanip>
#include<string>
#include<math.h>
#include<cmath>
using namespace std;
int main(){
long long n,p,a=1,sum=0;
cin>>n>>p;
if(n<p)
{
for(int i=1;i<=n;i++){
a=a*i;
a=a%p;
sum=sum+a;
sum=sum%p;
}
cout<<sum;
}
else
{
for(int i=1;i<=p;i++){
a=a*i;
a=a%p;
sum=sum+a;
sum=sum%p;
}
cout<<sum;
}
return 0;
}