对于exGCD的证明:
d=gcd(a,b)=a*x+b*y
d=gcd(b,a%b)=b*x1+(a%b)y1
所以a*x+b*y=b*x1+(a%b)y1
又因为a%b=a-b*int(a/b)
所以a*x+b*y=a*y1+b*(x1-y1*int(a/b))
int gcd(int x, int y) {
return y ? gcd(y, x%y) : x;
}
int lcm(int x,int y){
return x / gcd(x, y)*y;
}
int extgcd(int a, int b,int &x,int &y) {
int d = a;
if (b != 0) {
d = extgcd(b, a%b, y, x);
y -= (a / b)*x;
}
else {
x = 1; y = 0;
}
return d;
}