输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %)
例如:n = 10, P = 11,10! = 3628800
3628800 % 11 = 10
10 11
10
分析:因为涉及到求N!,所以当n数值比较大的时候就会输出超时,此时需要简单的算法:
(a+b)%m=(a%m+b%m)%m; a*b%m=(a%m*b%m)%m;
#include<stdio.h>
int main()
{
long long n,p,i;
scanf("%lld%lld",&n,&p);
if(n==0)
printf("%lld",1);
else
{long long sum=1;
for(i=1;i<=n;i++)
sum=sum%p*i%p;
printf("%lld",sum);
}
return 0;
}