求逆元

扩展欧几里得:

注意除数需要与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;
}

posted on 2017-04-27 18:54  远搏  阅读(129)  评论(0)    收藏  举报

导航