算法求解了不定方程 ax+by=gcd(a,b) (1) 的一组解x0,y0
void gcd(int a,int b,int &d,int &x,int &y){
if(b==0){
d=a; x=1,y=0; return ;
}
gcd(b,a%b,d,y,x); y-=x*(a/b);
}
问题 解不定方程 ax+by=c (2)
令g=gcd(a,b)
结论:
ax+by=c 有解须满足 c=k*g ,若已知方程 ax+by=g 一组解 x0,y0, 原方程对应解为 (x0*k,y0*k)
该结论作为桥梁连接了(1)(2)两个方程; 简单说就是一个倍数关系
求任意解
ax+by=c 若已知一组解x0,y0, 任意解 (x0+k*b/g , y-k*a/g)
如果求最小整数解,%mod即可
x=(x%mod+mod)%mod