计算模n下a的逆,如果不存在逆,返回-1
#include<iostream>
#include<cstdio>
#define ll long long
using namespace std;
ll gcd(ll a,ll b,ll &d,ll& x,ll& y){
if(!b){d=a;x=1;y=0;return x;}
else{
gcd(b,a%b,d,y,x);
y-=x*(a/b);
}
return x;
}
ll inv(ll a,ll n){
ll d,x,y;
gcd(a,n,d,x,y);
return d==1?(x+n)%n:-1;
}
int main(){
long long a,b;cin>>a>>b;
cout<<inv(a,b);
}
求逆的另一个方法用欧拉定理
a的逆就是a^(phi(n)-1) 快速幂