(ax_1+by_1=gcd(a,b))
(bx_2+(a mod b)y_2=gcd(b,a mod b))
(ecause gcd(a,b)=gcd(b,amod b))
( herefore ax_1+by_1=bx_2+(amod b)y_2)
(ecause amod b=a-lfloor frac{a}{b} floor b)
( herefore ax_1+by_1=bx_2+ay_2-lfloor frac{a}{b} floor by_2=ay_2+b(x_2-lfloorfrac{a}{b} floor y_2))
( herefore x_1=y_2,y_1=x_2-lfloorfrac{a}{b} floor y_2,x1,y1为当前层,x2,y2为递归的下一层的值)
(ecause 最后一层,a=g,b=0,ax+by=g)
( herefore 设x=1,y=0)
int exgcd(int a, int b, int &x, int &y) {
if (!b) {
x = 1;
y = 0;
return a;
}
int d = Exgcd(b, a % b, x, y);
int t = x;
x = y;
y = t - (a / b) * y;
return d;
}