「校内模拟20200429C」游戏达人
四月 29, 2020 · OI 题解
给定 $p,A,B,C,D$,求 $x,y$ 满足 $C^x \equiv D^y \pmod x$,并最小化 $Ax + By$。
$6000$ 组询问,$0 \leq A,B,C,D,p \leq 10^9$,保证 $p$ 是质数。
题解(个人做法)
因为 $p$ 是质数,我们求出其原根 $g$,故
假设
我们转化为了一个稍微好计算一点的问题:$f(d \cdot c^{-1}, p-1, A, B)$。
当然,可能存在 $c$ 模 $\varphi(p) = p-1$ 没有逆元的情况,我们需要做一点处理:
1 | # c x \equiv d y \pmod p |
考虑如何计算 $f$,采用类似欧几里得的思想。
假设 $i = \tfrac {kp + b} x$,其中 $x \mid kp + b$。由于 $x \perp p$,故确定 $b$ 后就能唯一确定 $k$。
实际上 $k$ 满足:
令 $q \equiv -p^{-1} \pmod x$,那么原式可以化为:
感性理解了一下逆元的分布应该是比较随机的,感觉复杂度应该是 $O(\log n)$。
题解(标答做法)
类欧几里得推导,设:
若 $d \geq f$,假设 $d = gf + h$,则
若 $d < f$,则
其中
因为我们要求最小化,不妨直接令 $\displaystyle i = \left\lfloor \frac {jf - e - 1} {d} \right\rfloor +1$
故
其实 $c$ 是不需要存的,但是式子都推好了就懒得改了。
另外还要存一下枚举的上下界,一层递归是 $7$ 个参数。
细节
0x01
特判 $p = 2$ 的情况。
0x02
两边能同时除以 $k$ 当且仅当
- $k \perp p$,转化为 $a \equiv b \pmod p$
- $k \mid p$,转化为 $a \equiv b \pmod {(p/k)}$