快速幂求逆元:
int q_pow(int a,int n,int m) {
int ans = 1;
while(n) {
if (n&1) {
ans = ans*a%m;
}
a = a*a%m;
n >>= 1;
}
return ans;
}
LL Fermatinv(LL a,LL m) { //前提p是质数
return qpow(a,m-2,m);
}
扩展欧几里得求逆元
void ex_gcd(LL a,LL b,LL &x,LL &y){
if(!b){x=1;y=0;return;}
ex_gcd(b,a%b,y,x);
y-=a/b*x;
}
LL mod_rev(LL a,LL n) {
LL x,y;
ex_gcd(a,n,x,y);
return (x+n)%n;
}