题解:
比较玄学的一个公式 n^(n-2) 然后用快速幂加不断求模 最后注意一下再进行快速幂之前n先要模一下,不然a*a时有可能爆掉 然后特判一下 0和1的一些情况
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<climits>
#include<cmath>
#include<vector>
#include<stack>
#include<queue>
#include<cctype>
#include<map>
#include<set>
#define MAXA 200
using namespace std;
long long n,MOD;
long long FastPow(long long a,long long b)
{
long long Ans = 1;
while(b)
{
if(b & 1)
Ans = Ans * a % MOD;
a = a * a % MOD;
b >>= 1;
}
return Ans;
}
int main()
{
scanf("%lld %lld",&n,&MOD);
if(MOD == 0)
{
printf("-1");
return 0;
}
else if(n == 1)
{
printf("1");
return 0;
}
else if(n == 0)
{
printf("0");
return 0;
}
printf("%lld",FastPow(n%MOD,n-2));
}