拓展欧几里得定理
void gcd(int a, int b, int &d, int &x, int &y) { if(!b) d = a, x = 1, y = 0; else gcd(b, a%b, d, y, x), y -= x * (a / b); }
假设 ax1+by1=gcd(a,b) (方程一) bx2+(a%b)y2=gcd(b,a%b)(方程二)
由欧几里得算法gcd(a,b)=gcd(b,a%b) 得到 ax1+by1=bx2+(a%b)y2
即ax1+by1=bx2+(a-a/b*b)y2 => ax1+by1=ay2+b(x2-a/b*y2)
最后可以得到 x1=y2; y1=x2-a/b*y2

浙公网安备 33010602011771号