一些逆元小学习

假如我们想求 \(x\)\(p\) 的逆元,设 \(p=kx+r\),那么有:

\[\begin{align*} kx+r&\equiv0&\pmod p \\ \frac {kx}{xr}+\frac r{xr}&\equiv0&\pmod p \\ k\times r^{-1} + x^{-1}&\equiv0&\pmod p \\ x^{-1}&\equiv -\lfloor\frac px\rfloor\times r^{-1} &\pmod p \end{align*} \]

那么可以转化为求 \(r\),也就是 \(p\bmod x\) 的逆元。

通常情况下这个可以用来线性处理前若干个正整数的逆元。

但是借助它,我们可以得到一种快速的全值域逆元。

具体来说,取阈值 \(B\)。直接预处理前 \(B\) 个正整数的逆元,如果询问的数大于 \(B\),就暴力跳 \(p\bmod x\) 直到跳进 \(B\)

\(B=10^7,p\approx 10^9\) 的话,平均情况下能在 \(4.18\) 步内跳进。


以及有一些其他的均摊 \(O(1)\) 的逆元方法。

比如离线下来统一处理。

还有维护分数形式,最后除一次。

posted @ 2025-11-06 15:11  CuteNess  阅读(6)  评论(0)    收藏  举报