51nod 1008 N的阶乘 mod P

输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %)
 
例如:n = 10, P = 11,10! = 3628800
3628800 % 11 = 10
 
Input
两个数N,P,中间用空格隔开。(N < 10000, P < 10^9)
 
Output
输出N! mod P的结果。
 
Input示例
10 11
 
Output示例
10

如果用普通的方法就会wa,如下所示
 #include <iostream>
#include <stdio.h>
using namespace std;
int fac(int m){
if(m==) return ;
return m*fac(m-);
}
int main(){
long long n,p,t;
scanf("%I64d%I64d",&n,&p);
t=fac(n);
cout<<t%p<<endl;
return ;
}
 
 
注意longlong Int 的使用以及边乘边求余(int的最大值不超过3*10^9)
  (a×b) mod c=(a mod c * b mod c) mod c
  a^n%p=(((a*a%p)*a%p)*a%p)  网上看到的不太懂
 #include <iostream>
using namespace std;
int main(){
long long n,p,res=;
cin>>n>>p;
for(int i=;i<=n;i++){
res*=i;
res%=p;
}
cout<<res<<endl;
return ;
}
 
上一篇:SR4000笔记


下一篇:python datetime 日期相减方法