扩展欧几里得
先来看贝祖定理: ax+by=m有解, 那么m = k * gcd(a, b)
令m=gcd(a, b)
ax + by = gcd(a, b)
b * x1 + (a - a / b * b) y1 = gcd(b, a % b)
ax + by = ay1 + b(-a / b y1 + x1)
x = y1
y = x1 - a / b y1
可以通过gcd来解方程
上代码
int extgcd(int a, int b, int &x, int &y) {
if (b == 0) {
x = 1;
y = 0;
return a;
}
int x1, y1;
int gcd = extgcd(b, a % b, x1, y1);
x = y1;
y = x1 - a / b * y1;
return gcd;
}