Loading docs/math/linear-equation.md +4 −3 Original line number Diff line number Diff line Loading @@ -10,13 +10,14 @@ **定理 1** :方程 $ax+by=c$ 与方程 $ax \equiv c \pmod b$ 是等价的,有整数解的充要条件为 $\gcd(a,b) \mid c$ 。 根据定理 1,方程 $ax+by=c$ ,我们可以先用扩展欧几里得算法求出一组 $x_0,y_0$ ,也就是 $ax_0+by_0=\gcd(a,b)$ ,然后两边同时除以 $\gcd(a,b)$ ,再乘 $c$ 。然后就得到了方程 $acx_0/\gcd(a,b)+bcy_0/\gcd(a,b)=c$ ,然后我们就找到了方程的一个解。 根据定理 1,方程 $ax+by=c$ ,我们可以先用扩展欧几里得算法求出一组 $x_0,y_0$ ,也就是 $ax_0+by_0=\gcd(a,b)$ ,然后两边同时除以 $\gcd(a,b)$ ,再乘 $c$ 。然后就得到了方程 $a\dfrac{c}{\gcd(a,b)}x_0+b\dfrac{c}{\gcd(a,b)}y_0=c$ ,然后我们就找到了方程的一个解。 **定理 2** :若 $\gcd(a,b)=1$ ,且 $x_0,y_0$ 为方程 $ax+by=c$ 的一组解,则该方程的任意解可表示为: $x=x_0+bt,y=y_0-at$ , 且对任意整数 $t$ 都成立。 **定理 2** :若 $\gcd(a,b)=1$ ,且 $x_0$ 、 $y_0$ 为方程 $ax+by=c$ 的一组解,则该方程的任意解可表示为: $x=x_0+bt$ , $y=y_0-at$ , 且对任意整数 $t$ 都成立。 根据定理 2,可以求出方程的所有解。但在实际问题中,我们往往被要求求出一个最小整数解,也就是一个特解 $x,t=b/\gcd(a,b),x=(x \bmod t+t) \bmod t$ 。 根据定理 2,可以求出方程的所有解。但在实际问题中,我们往往被要求求出一个最小整数解,也就是一个特解 $x=(x \bmod t+t) \bmod t$ ,其中 $t=\dfrac{b}{\gcd(a,b)}$ 。 ???+note "代码实现" ```cpp int ex_gcd(int a, int b, int& x, int& y) { if (b == 0) { Loading Loading
docs/math/linear-equation.md +4 −3 Original line number Diff line number Diff line Loading @@ -10,13 +10,14 @@ **定理 1** :方程 $ax+by=c$ 与方程 $ax \equiv c \pmod b$ 是等价的,有整数解的充要条件为 $\gcd(a,b) \mid c$ 。 根据定理 1,方程 $ax+by=c$ ,我们可以先用扩展欧几里得算法求出一组 $x_0,y_0$ ,也就是 $ax_0+by_0=\gcd(a,b)$ ,然后两边同时除以 $\gcd(a,b)$ ,再乘 $c$ 。然后就得到了方程 $acx_0/\gcd(a,b)+bcy_0/\gcd(a,b)=c$ ,然后我们就找到了方程的一个解。 根据定理 1,方程 $ax+by=c$ ,我们可以先用扩展欧几里得算法求出一组 $x_0,y_0$ ,也就是 $ax_0+by_0=\gcd(a,b)$ ,然后两边同时除以 $\gcd(a,b)$ ,再乘 $c$ 。然后就得到了方程 $a\dfrac{c}{\gcd(a,b)}x_0+b\dfrac{c}{\gcd(a,b)}y_0=c$ ,然后我们就找到了方程的一个解。 **定理 2** :若 $\gcd(a,b)=1$ ,且 $x_0,y_0$ 为方程 $ax+by=c$ 的一组解,则该方程的任意解可表示为: $x=x_0+bt,y=y_0-at$ , 且对任意整数 $t$ 都成立。 **定理 2** :若 $\gcd(a,b)=1$ ,且 $x_0$ 、 $y_0$ 为方程 $ax+by=c$ 的一组解,则该方程的任意解可表示为: $x=x_0+bt$ , $y=y_0-at$ , 且对任意整数 $t$ 都成立。 根据定理 2,可以求出方程的所有解。但在实际问题中,我们往往被要求求出一个最小整数解,也就是一个特解 $x,t=b/\gcd(a,b),x=(x \bmod t+t) \bmod t$ 。 根据定理 2,可以求出方程的所有解。但在实际问题中,我们往往被要求求出一个最小整数解,也就是一个特解 $x=(x \bmod t+t) \bmod t$ ,其中 $t=\dfrac{b}{\gcd(a,b)}$ 。 ???+note "代码实现" ```cpp int ex_gcd(int a, int b, int& x, int& y) { if (b == 0) { Loading