BSGS(大步小步) 算法 学习小记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011056504/article/details/83019658

问题

以下方程
x y z ( m o d p ) x^y \equiv z\pmod{p}
已知 x x , z z y y

解法

根据费马小定理有 a ϕ ( p ) 1 ( m o d m ) a^{\phi(p)} \equiv 1\pmod{m}
所以答案上界是 ϕ ( p ) \phi(p)
m = ϕ ( p ) m=\sqrt {\phi(p)}
那么假设 y = a m + b y=am+b

x a m + b z ( m o d p ) x^{am+b} \equiv z \pmod{p}
x b z a m ( m o d p ) x^{b} \equiv z^{-am} \pmod{p}
那么将 x b x^b 用hash存起来,显然只有m个。
然后枚举a,右边与左边匹配就行了,也是只有m个。
复杂度就是根号级别的了。

由于没找到程序,就不贴了。

猜你喜欢

转载自blog.csdn.net/u011056504/article/details/83019658
今日推荐