线性组合、裴蜀定理、小凯的疑惑
问题的起源
已知 \(a,b\) 两个正整数,\(ax+by\) \((x,y\in\mathbb{Z})\) 的取值范围是怎么样的?
首先,若 \(y=0\),那么 \(ax+by\) 可以取 \(\cdots ,-2a,-a,0,a,2a,\cdots\),这些取值组成一个模 \(a\) 等价类 \([0]_a\)
根据整数模 \(n\) 的余数,我们可以将所有整数划分成 \(n\) 个等价类(也叫同余类、剩余类)。包含整数 \(a\) 的模 \(n\) 等价类为 \([a]_n=\{a+kn:k\in \mathbb{Z}\}\)。例如,\([3]_7=\{\cdots,-11,-4,3,10,17,\cdots\}\),这个集合同时也可以表示为 \([-4]_7\) 和 \([10]_7\)。
——《算法导论》
现在,我们让 \(y\) 逐渐增大,可以得到一系列模 \(a\) 等价类:\([0]_a,[b]_a,[2b]_a,\cdots\),而这些集合的并集就是 \(ax+by\) \((x,y\in\mathbb{Z})\) 所有可能的取值。
这里以 \(a=14,b=18\) 为例打个表:
可以看到 \(y={\color{Red}{7}}\) 时 \(yb \bmod a\) 的值为 \(0\),进而有 \([{\color{Red}{7}}b]_a=[0]_a\),即 \(y={\color{Red}{7}}\) 时 \(ax+by\) 可能的取值与 \(y=0\) 时是相同的。此后 \(yb \bmod a\) 的值又会重复出现 \(0,4,8,12,2,6,10\),都与前面的重复了,因此也不会引入任何新的 \(ax+by\) 的取值。
所以 \([0]_a\cup [4]_a\cup [8]_a\cup [12]_a\cup [2]_a\cup [6]_a\cup [10]_a\) 就是 \(ax+by\) 所有可能的取值。
至于这个 \({\color{Red}{7}}\) 是怎么来的呢?根据上面给过程,\({\color{Red}{7}}\) 是使得 \(yb\equiv 0 \pmod a\) 的最小正整数 \(y\),即使得 \(a\mid yb\) 的最小正整数 \(y\)。
我们可以把 \(a,b\) 分解为 「各自特有的约数 \(k_1,k_2\)」 和 「公共约数 \(\gcd(a,b)\)」 两部分:\(a=k_1\gcd(a,b)\),\(b=k_2\gcd(a,b)\) \((k_1,k_2\in\mathbb{Z})\)。
因为 \(\gcd(a,b)\) 已经是 \(a,b\) 的最大公约数了,那么剩下的部分 \(k_1,k_2\) 里面肯定不存在任何公约数了,即 \(k_1,k_2\) 互质。这样,我们可以把 \(a\mid yb\) 改写为 \(k_1\gcd(a,b)\mid yk_2\gcd(a,b)\),所以最小的满足该条件的 \(y\) 为 \(k_1=\dfrac{a}{\gcd(a,b)}\)。
到这里,我们得出了求 \(ax+by\) 取值范围的一个方法:
再看一眼 \([0]_a\cup [4]_a\cup [8]_a\cup [12]_a\cup [2]_a\cup [6]_a\cup [10]_a\),你是否觉得有着某种规律?
排序一下:\([0]_a\cup [2]_a\cup [4]_a\cup [6]_a\cup [8]_a\cup [10]_a\cup [12]_a\)
你发现,这些数的间隔恰好都是 \(2\),巧了,\(\gcd(a,b)=\gcd(14,18)=2\)。而且 \(ax+by\) 可能的取值恰好就是 \(k\gcd(a,b)\) \((k\in\mathbb{Z})\) 可能的取值。对于任意的 \(a,b\) 情况是否都如此呢?
所有 \(ax+by\) 显然一定是 \(\gcd(a,b)\) 的整数倍,因此问题的关键就是所有 \(\gcd(a,b)\) 的整数倍是不是都能写成 \(ax+by\),即 \(ax+by\) 能否取到 \(k\gcd(a,b)\) 的所有值。
因为 \(\displaystyle\{ax+by:x,y\in\mathbb{Z}\}=\bigcup_{i=0}^{a/\gcd(a,b)-1}[ib\bmod a]_a\),所以只需证明 \(ib\bmod a\) \((0\le i \le \frac{a}{\gcd(a,b)} -1)\) 能够取到 \([0,a-1]\) 范围内的所有 \(\gcd(a,b)\) 的倍数即可。
怎么证明?
\(0\le i \le \frac{a}{\gcd(a,b)} -1\) 范围内 \(i\) 的取值有 \(\frac{a}{\gcd(a,b)}\) 个,而 \([0,a-1]\) 范围内 \(\gcd(a,b)\) 的倍数也有 \(\frac{a}{\gcd(a,b)}\) 个。因此,只需证明 \(ib\bmod a\) 两两互不相同即可。
假设 \(0\le i \le \frac{a}{\gcd(a,b)} -1\) 范围内存在两个数 \(i_1<i_2\) 使得 \(i_1b\bmod a=i_2b\bmod a\),即 \(a|(i_2-i_1)b\)
由 \(0\le i \le \frac{a}{\gcd(a,b)} -1\) 知 \(i_2-i_1 \le \frac{a}{\gcd(a,b)} -1\),这与 \(\frac{a}{\gcd(a,b)}\) 是使得 \(a\mid yb\) 的最小正整数 \(y\) 相矛盾!因此 \(ib\bmod a\) 两两互不相同,也就证明了
裴蜀定理
经过上述推导之后,裴蜀定理便是显然的了。
裴蜀定理得名于法国数学家艾蒂安·裴蜀,说明了对任何整数 \(a,b\) 和它们的最大公约数 \(d\),关于未知数 \(x\) 和 \(y\) 的线性丢番图方程(称为裴蜀等式):
有解当且仅当 \(m\) 是 \(d\) 的倍数。裴蜀等式有解时必然有无穷多个整数解,每组解 \((x,y)\) 都称为裴蜀数,可用辗转相除法求得。
例如,\(12\) 和 \(42\) 的最大公因子是 \(6\),则方程 \(12x + 42y = 6\) 有解。事实上有 \((-3)\times 12 + 1\times 42 = 6\) 及 \(4\times 12 + (-1)\times 42 = 6\)。
特别来说,方程 \(ax + by = 1\) 有解当且仅当整数 \(a\) 和 \(b\) 互素。
裴蜀等式也可以用来给最大公约数定义:\(d\) 其实就是最小的可以写成 \(ax + by\) 形式的正整数。这个定义的本质是整环中「理想」的概念。因此对于多项式整环也有相应的裴蜀定理。
小凯的疑惑
来源:[NOIP2017 提高组] D1T1
题目描述
小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。现在小 凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在 小凯无法准确支付的商品。
输入格式
两个正整数 \(a\) 和 \(b\),它们之间用一个空格隔开,表示小凯中金币的面值。
输出格式
一个正整数 \(N\),表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。
分析
因为 \(a,b\) 互质,\(\gcd(a,b)=1\),所以 \(\{ax+by:x,y\in\mathbb{Z}\}=\{k\gcd(a,b):k\in\mathbb{Z}\}=\mathbb{Z}\)。但是这并没有用,因为这里的 \(x,y\) 可以取负数,而题中 \(x,y\) 只能取非负数。
形式上,本题需要求最大的不属于 \(\{ax+by:x,y\in\mathbb{N}\}\) 的正整数,这就需要我们分析 \(ax+by\) \((x,y\in\mathbb{N})\) 的取值范围。
我们可以仿照前面的思想,记 \([x]_a^+ = [x]_a \cap [x,+\infty)\)(这个符号是我自己定义的新符号),那么
以 \(a=5, b=7\) 为例打个表:
这里贴一张大佬做的图:
从图中可以明显看出 \(28\) 上面的一个数就是不能支付的最昂贵价值。
严谨地讲就是:
因为 \(\{ax+by:x,y\in\mathbb{Z}\}=\mathbb{Z}\),\(\displaystyle\{ax+by:x,y\in\mathbb{Z}\}=\bigcup_{i=0}^{a/\gcd(a,b)-1}[ib]_a=\bigcup_{i=0}^{a-1}[ib]_a\),
所以 \(\displaystyle\bigcup_{i=0}^{a-1}[ib]_a =\mathbb{Z}\),所以 \(\displaystyle\bigcup_{i=0}^{a-1}\left([ib]_a\cap[0,+\infty)\right)=\mathbb{N}\)
而 \(\displaystyle\{ax+by:x,y\in\mathbb{N}\} = \bigcup_{i=0}^{a-1}[ib]^+_a\)(记为集合 \(A\))
所以 \(\displaystyle\complement_{\mathbb{N}} A=\bigcup_{i=0}^{a-1}\left([ib]_a\cap[0,ib-1]\right)=\bigcup_{i=0}^{a-1}\left([ib]_a\cap[0,ib-a]\right)\)
所以 \(\max(\complement_{\mathbb{N}} A)=(a-1)b-a=ab-a-b\)。