探索整格点坐标交线,直观理解线性丢番图方程可解性
裴蜀定理 (Bézout's Identity) 描述了关于最大公约数的一个重要代数性质。它是扩展欧几里得算法的数论基础。
对于任意非零整数 $a$ 和 $b$,设其最大公约数 $d = \gcd(a, b)$。则关于未知数 $x$ 和 $y$ 的线性丢番图方程:
有整数解的充分必要条件是:常数 $c$ 必须是最大公约数 $d$ 的整数倍(即 $d \mid c$)。
特别地,一定存在整数 $x_0, y_0$ 使得:
若将 $ax + by = c$ 视为平面直角坐标系中的一条直线,寻找它的整数解,等价于寻找这条直线所经过的整格点(坐标 $x, y$ 均为整数的点)。
// 扩展欧几里得算法求 gcd(a,b) 及裴蜀特解 x, y
long long extGcd(long long a, long long b, long long &x, long long &y) {
if (b == 0) {
x = 1; y = 0;
return a;
}
long long x1, y1;
long long d = extGcd(b, a % b, x1, y1);
x = y1;
y = x1 - (a / b) * y1;
return d;
}
// 裴蜀判定:方程 ax + by = c 是否有整数解
bool hasSolution(long long a, long long b, long long c) {
long long x, y;
return c % extGcd(a, b, x, y) == 0;
}