问题
以下方程
x
y
≡
z
(
m
o
d
p
)
x^y \equiv z\pmod{p}
xy≡z(modp)
已知
x
x
x,
z
z
z求
y
y
y
解法
根据费马小定理有
a
ϕ
(
p
)
≡
1
(
m
o
d
m
)
a^{\phi(p)} \equiv 1\pmod{m}
aϕ(p)≡1(modm)
所以答案上界是
ϕ
(
p
)
\phi(p)
ϕ(p)
令
m
=
ϕ
(
p
)
m=\sqrt {\phi(p)}
m=ϕ(p)
那么假设
y
=
a
m
+
b
y=am+b
y=am+b
则
x
a
m
+
b
≡
z
(
m
o
d
p
)
x^{am+b} \equiv z \pmod{p}
xam+b≡z(modp)
x
b
≡
z
∗
x
−
a
m
(
m
o
d
p
)
x^{b} \equiv z*x^{-am} \pmod{p}
xb≡z∗x−am(modp)
那么将
x
b
x^b
xb用hash存起来,显然只有m个。
然后枚举a,右边与左边匹配就行了,也是只有m个。
复杂度就是根号级别的了。
由于没找到程序,就不贴了。