UVA10104 Exgcd(裴蜀定理)

UVA10104 Euclid Problem

非常 template 的一道题。

给定 \(a, b\),令 \(d \gets \gcd(a, b)\),求 \(|x| + |y|\) 最小的 \(x, y\) 满足 \(ax + by = d\)

关于 exgcd 也没什么好讲的,自行了解。

这里补充一下 裴蜀定理 的证明。

裴蜀定理:\(\forall a, b \in \mathbb Z ~~ \exists x, y \in \mathbb Z ~~ \text{s.t.} ~~ ax + by = \gcd(a, b)\)

证明:

  • \(a = b = 0\) 显然有解。

  • \(a = 0\)\(b = 0\)\(\gcd(a, b) = a\),取 \(x = 1, y = 0\)


\(\because \gcd(a, b) = \gcd(a, -b)\),可以将 \(a, b\) 都变为正整数,\(a \geq b\)\(d \gets \gcd(a, b)\)

\[ax + by = d \]

等式两边同除以 \(d\),得

\[a'x + b'y = 1 \]

可知 \(\gcd(a', b') = 1\)


原命题转为证 \(\gcd(a', b') = 1\)\(\mathbf{a'x + b'y = 1}\)

辗转相除 \(\gcd\) 步骤为 \(\gcd(a', b') = \gcd(b', a' \bmod b') = \cdots\),将每次传参时后者称为 \(p_1 \sim p_k\),则有

\[\gcd(a', b') = \gcd(b', p_1) = \gcd(p_1, p_2) = \cdots = \gcd(p_{n - 1}, p_n) = 1 \]

展开为带余数除法得

\[\begin{aligned} a' &= x_1 b' + p_1 \\ b' &= x_2 p_1 + p_2 \\ p_1 &= x_3 p_2 + p_3 \\ &\ \ \vdots \\ p_{n - 3} &= x_{n - 1} p_{n - 2} + p_{n - 1} & \text{(1)} \\ p_{n - 2} &= x_n p_{n - 1} + p_n & \text{(2)} \\ p_{n - 1} &= x_{n + 1} p_n \end{aligned} \]

设辗转相除 \(\gcd\) 于二者互质时退出,则 \(p_n = 1\) 带入 \(\text{(2)}\) 式得

\[\begin{aligned} p_{n - 2} &= x_n p_{n - 1} + 1 \\ p_{n - 2} - x_n p_{n - 1} &= 1 & \text{(3)} \end{aligned} \]

再由 \(\text{(1)}\) 式移项

\[p_{n - 1} = p_{n - 3} - x_{n - 1} p_{n - 2} \]

代入 \(\text{(3)}\) 式后得

\[(x_n x_{n - 1} + 1) p_{n - 2} - x_n p_{n - 3} = 1 \]

同理代入 \(p_{n - 2} \cdots p_1\),最后得 \(a'x + b'y = 1\)\(\square\)

posted @ 2023-12-24 13:33  Carrot-Meow~  阅读(5)  评论(0)    收藏  举报