线性求逆元

线性求逆元

当初做洛谷模板题的时候还没发现原来这就是线性求逆元,现在发现了才知道原来这么好用。

首先我们要求 \([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数组记录即可。

posted @ 2021-11-15 20:57  zhangtingxi  阅读(93)  评论(0编辑  收藏  举报