N的阶乘模P

2019-04-13 12:00发布

输入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的结果。 Sample Input 10 11 Sample Output 10 思路:(a+b)%m=(a%m+b%m)%m;  a*b%m=a%m*b%m; #include #include using namespace std; long long n,p,num; int main() { while(scanf("%d %d",&n,&p)!=EOF) { long long num=1; if(n==0) printf("%lld ",1); else { for(int i=1;i<=n;i++) num=num%p*i%p; printf("%lld ",num); } } return 0; } 另一种实现方法: #include long long n,p,ans=1; int main(){ scanf("%I64d%I64d",&n,&p); for(int i=1;i<=n;i++) ans=ans*i%p; printf("%I64d ",ans); return 0; }