求逆元

扩展欧几里得:

注意除数需要与mod互质

void gcd(LL a,LL b,LL &d,LL &x,LL &y)
{
     if(!b){d=a;x=1;y=0;}
     else{gcd(b,a%b,d,y,x);y-=x*(a/b);}
}
LL inv(LL a,LL n)
{
     LL d,x,y;
     gcd(a,n,d,x,y);
     return d==1?(x+n)%n:-1;
}
原文地址:https://www.cnblogs.com/yuanbo123/p/6775861.html