同余方程 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; }