「校内模拟20200429C」游戏达人

「校内模拟20200429C」游戏达人

给定 $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
2
3
4
5
6
# c x \equiv d y \pmod p
g = gcd(c, d, p)
c /= g; d /= g; p /= g
cg = gcd(c, p); c /= cg; b *= cg
dg = gcd(d, p); d /= dg; a *= dg
p /= cg * dg

考虑如何计算 $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$ 当且仅当

  1. $k \perp p$,转化为 $a \equiv b \pmod p$
  2. $k \mid p$,转化为 $a \equiv b \pmod {(p/k)}$