CF 1103B Game with modulo
\(a, x\) 是正整数。显然有
\begin{aligned}
x \ge 2x \pmod{a} \implies a \le 2x
\end{aligned}
若 \(x \le a\) 则
\begin{aligned}
x < 2x \pmod{a} \implies a > 2x
\end{aligned}
证明
首先,\(x < 2x \pmod{a} \implies x \ne a\) 即 \(x < a\),故
\begin{aligned}
x < 2x \pmod{a} \iff x < 2x \bmod a.
\end{aligned}
假设 $ a \le 2x $,则
\begin{aligned}
\color{red}{2x \bmod{a} \le 2x - a} = x + (x - a) < x
\end{aligned}
矛盾!
比赛时我花了 30 分钟推出了上述结论。
据此可以确定 \(a\) 的范围
有两种情况
Case 1
$ 1\le a \le 2$
此时 ask(2, 1) 即可确定 \(a\) 的值。
Case 2
$ x < a \le 2x$ 且 \(x = 2^k, k \ge 1\)
在剩下的一个小时内,我都没想出 CASE2 应该怎么做。
思考的方向当然是二分答案。
注意到,当 $ x < i <a$ 时 \(i \bmod a = i > x\),当 \(a \le i \le 2x\) 时 $ i \bmod a = i - a < x$
因此 $ a = \min\{ i : i \bmod a < x \bmod a\} $