ll exgcd(ll a,ll b,ll &x,ll &y) {
if(!b) {
x=1,y=0;
return a;
}
ll d=exgcd(b,a%b,y,x);
y-=a/b*x;
return d;
}
ll d=exgcd(a,b,x,y);
ax+by=c;
x=x*c/d;
ll s=b/d;
s=abs(s);
if(s!=1) x=(x%s+s)%s;
x为最小正整数解
此时对应的y为
y=(c-x*a)/b;
若要枚举通解
ta=a/d,tb=b/d;
x+=tb,y-=ta;
扩展欧几里得算法最小正整数解
于 2023-09-16 11:17:46 首次发布