求逆的模板(求逆本質上就是在mod 的狀態下除一個數)

//接口:inv(a,n) a : 待求逆的數,n表示mod
//沒有逆元,返回-1
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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章