线性求逆元
线性求逆元
当初做洛谷模板题的时候还没发现原来这就是线性求逆元,现在发现了才知道原来这么好用。
首先我们要求 \([1,n]\pmod p\) 的逆元。
第一,我们知道:
\[1^{-1}\equiv1\pmod p
\]
现在我们要求 \(i\pmod p\) 的逆元,肯定的,我们可以把 \(p\) 拆分成:
\[p=k\times i+r
\]
\[\because p\equiv0\pmod p
\]
\[\therefore k\times i+r\equiv 0\pmod p
\]
我们分别让两边乘上 \(i^{-1}\) 和 \(r^{-1}\),则:
\[k\times r^{-1}+i^{-1}\equiv0\pmod p
\]
移项:
\[i^{-1}\equiv-k\times r^{-1}\pmod p
\]
按照开始那条式子 \(p=k\times i+r\) 我们可以得出:
\[k=\left\lfloor\frac{p}{i}\right\rfloor
\]
\[r=p\bmod i
\]
把 \(k=\left\lfloor\frac{p}{i}\right\rfloor\) 和 \(r=p\bmod i\) 代入到 \(i^{-1}\equiv-k\times r^{-1}\pmod p\) 中我们可以得到:
\[i^{-1}\equiv-\left\lfloor\frac{p}{i}\right\rfloor\times (p\bmod i)^{-1}\pmod p
\]
由于 \((p\bmod i)<i\),所以 \((p\bmod i)^{-1}\) 必然在前面求过,所以我们可以提前用一个inv数组记录即可。
本文来自博客园,作者:zhangtingxi,转载请注明原文链接:https://www.cnblogs.com/zhangtingxi/p/15558214.html