模板

同余方程 ax+by=c 有解,等价于 c=kg。当扩展欧几里得用于求逆元时只需要a和m互质。(求逆元即c=1,由前面知c是g的倍数,故g=1)

//扩展欧几里得算法:返回 g=gcd(a,b) ,以及对应的等式 ax+by=g 的解
ll exgcd(ll a,ll b,ll &x,ll &y) {
    if(!a&&!b)
        return -1;
    if(!b) {
        x=1,y=0;
        return a;
    }
    ll d=exgcd(b,a%b,y,x);
    y-=a/b*x;
    return d;
}

//扩展欧几里得算法求逆元,只要求 a,m 互质
ll inv2(ll a,ll m) {
    ll x,y;
    ll d=exgcd(a,m,x,y);
    if(d==1)
        return (x%m+m)%m;
    return -1;
}
原文地址:https://www.cnblogs.com/Yinku/p/10534106.html