题目描述
输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %)
例如:n = 10, P = 11,10! = 3628800
3628800 % 11 = 10
输入
两个数N,P,中间用空格隔开。(N < 10000, P < 10^9)
输出
输出N! mod P的结果
代码实现
#include<iostream>
using namespace std;
//(a+b)%m=(a%m+b%m)%m
//A*B%m=(a%m*b%m)%m
int main(){
long long N;
long long P;
cin>>N;
cin>>P;
long long sum=1;
if(N==1){
cout<<1;
}
else{
for(long long i=1;i<=N;i++){
sum=(sum%P)*(i%P);
//sum=sum*(i%P); 溢出
// cout<<sum;
}
cout<<sum%P;
}
return 0;
}
总结
//(a+b)%m=(a%m+b%m)%m
//AB%m=(a%mb%m)%m
两个公式