关于解数论不等式

发布时间 2023-11-12 23:25:50作者: kyEEcccccc

今天在群里又看到了经典的数论不等式:\(\min x, s.t. L \le ax \bmod b \le R\)。以及杜岩旭问这个是不是等价于 \(\min at \bmod b, t \in [L, R]\)。实际上当然是等价的。首先我们可以胡乱处理一下令 \(a \perp b\),无论在哪个问题中都是一样的,这样有逆元。接下来,先考虑如何前者变成后者。容易发现令 \(t = ax \bmod b\) 会导出 \(x \bmod b = a^{-1}t \bmod b\)。而在前一个问题的最优解中不会出现 \(x >= b\) 毕竟这时候肯定出循环了,所以我们放心大胆地令 \(x = ta^{-1} \bmod b\),这样就变成了 \(\min a^{-1}t \bmod b, s.t. t\in [L, R]\)。反过来后者变前者也是一样,直接令 \(x = at \bmod b\),则 \(t = a^{-1}x\bmod b\) 于是解决了。注意到我们还需要考虑这个 \([L, R]\) 不包含于 \([0, b)\) 的情况,但是你可以直接把区间拆成前后缀两个,然后取最小值;而如果完整包含一个周期答案就直接为 \(1\) 了。所以互相转化是容易的。

接下来考虑这个玩意的解法(当然假设 \([L, R]\subseteq[0, b)\)):

\[\begin{aligned} L \le ax \bmod b \le R\\ L \le ax - by \le R\\ ax - R \le by \le ax - L \end{aligned} \]

到这一步除了 \(\LaTeX\) 没有对齐以外应该没有什么问题。那么考虑直接给这个不等式两边(三边?)同时 \(\bmod a \)

\[\begin{aligned} (ax - R) \bmod a \le by \bmod a \le (ax - L) \bmod a\\ (-R) \bmod a \le (b \bmod a)y \bmod a \le (-L) \bmod a \end{aligned} \]

注意到这里让系数 \(b\)\(a\) 取模了!然后两者交换了位置,这完全就是辗转相除法!此外我们只需要最小化 \(y\) 即可最小化 \(x\),所以这个问题结构和上面是完全相同的。唯一的问题是这么做一看就不对,仔细分析一下就更不对了。怎么让它变对呢?

考虑啥时候这个东西是对的。注意到如果按照除以 \(a\) 的商划分数轴,当 \([-R, -L]\) 全在同一段的时候这样取模就是对的。如果不全在同一段怎么办?注意到这时候 \([L, R]\) 内至少有一个 \(a\) 的倍数,然后你回过头看看原问题发现这时候有平凡解——直接选择区间内第一个 \(a\) 的倍数即可。所以把这个特判掉,开香槟。我们的做法是小常数单 \(\log\) 的,只要写十行,比什么万能欧几里得牛到不知道哪里去了。