法一:费马小定理:a^p(mod p)等价于1(mod p),前提为a,p互质;当p为质数时,a^(p-2)(mod p) 为a的逆元,快速幂求解下
/**/
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <stack>
#include <queue>
typedef long long LL;
using namespace std;
LL a, p;
LL pow_mod(int x, int num, int y){
LL res = 1 % y;
x %= y;
while(num){
if(num & 1) res = res * x % y;
x = x * x % y;
num >>= 1;
}
return res;
}
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
scanf("%lld %lld", &a, &p);
LL t = pow_mod(a, p - 2, p);
printf("%lld\n", t);
return 0;
}
/**/
法二:扩展欧几里德:ax+by=gcd(x,y);
我们这里用的是ax+by=1时的情况,就是x与y互质时。
/**/
#include <cstdio>
#include <