扩展 BSGS 学习笔记

离散对数 & BSGS 学习笔记 中,我们学习了 BSGS 。

设有 \(a,b,m\in\mathbf{N^*}\) ,且 \((a,m)\ne1\) ,求解:

\[a^x\equiv b\pmod m \]

这玩意咋求解?把它变成 BSGS 能做的形式不就行了!

首先对于 \(a\equiv b\equiv0\) ,可以直接得到 \(x=1\)

或者当 \(b\equiv1\) 时,得到 \(x=0\)

否则,原方程可以写为

\[a^x+km=b \]

\(d=(a,m)\) ,则根据裴蜀定理,这个方程有解的必要条件为 \(d|b\) 。所以,当 \(d\not|b\) 时可以直接判断为无解。

否则,原方程可以化为

\[\dfrac{a}{d}\cdot a^{x-1}\equiv\dfrac{b}{d}\pmod{\dfrac{m}{d}} \]

继续设 \(d'=(a,\dfrac{m}{d})\) ,若 \(d'|\dfrac{b}{d}\) ,则原方程可以化为

\[\dfrac{a}{dd'}\cdot a^{x-2}\equiv\dfrac{b}{dd'}\pmod{\dfrac{m}{dd'}} \]

\(D=\prod d\) ,则以此类推直到 \(a\perp\dfrac{m}{D}\) ,则原方程转化为

\[\dfrac{a^k}{D}\cdot a^{x-k}\equiv\dfrac{b}{D}\pmod{\dfrac{m}{D}} \]

其中 \(k\)\(d\) 的个数。

这样就可以用 BSGS 求 \(x-k\) 的值了。

题目

题单: https://vjudge.net/article/5400

洛谷 P4195 【模板】扩展 BSGS/exBSGS

模板。

posted @ 2024-07-31 16:18  01bit  阅读(7)  评论(0编辑  收藏  举报