乘法逆元专题

时间:2021-08-28
本文章向大家介绍乘法逆元专题,主要包括乘法逆元专题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

正常求逆元

由费马小定理

\[a^p\equiv a\pmod{p} \quad p\in prime \]

得:

\[a^{p-2}\equiv \dfrac{1}{a}\pmod{p} \]

之后称 \(a\) 关于模 \(p\) 的乘法逆元为 \(inv(a)\)

\(inv(a)\) 的时间复杂度为 \(O(\log p)\) (快速幂)

线性求 \(inv(i) \ (1\leqslant i\leqslant n)\)

即要 \(O(1)\) 在已知 \(inv(j) \ (1\leqslant j\leqslant i-1)\) 的前提下求 \(inv(i)\)

推导:

\(p\) 拆开

\[p=\left\lfloor\dfrac{p}{i}\right\rfloor\times i+p\%i \]

\[\left\lfloor\dfrac{p}{i}\right\rfloor\times i+p\%i\equiv 0\pmod{p} \]

两边同乘 \(inv(i)\times inv(p\%i)\),得

\[\left\lfloor\dfrac{p}{i}\right\rfloor\times inv(p\%i)+inv(i)\equiv 0\pmod{p} \]

\[inv(i)\equiv -\left\lfloor\dfrac{p}{i}\right\rfloor\times inv(p\%i)\pmod{p} \]

其中 \(inv(p\%i)\) 我们已知,就能线性求 \(inv(i) \ (1\leqslant i\leqslant n)\) 啦~

线性求 \(inv(i!) \ (1\leqslant i\leqslant n)\)

先求出 \(inv(n!)\),之后

\[inv(i!)=inv((i+1)!)\times (i+1) \ (1\leqslant i\leqslant n-1) \]

就结束了~

当然这个也可以配合 \(i! \ (0\leqslant i\leqslant n-1)\) 导出 \(inv(i) \ (1\leqslant i\leqslant n)\) 的取值,也就是

\[inv(i)=inv(i!)\times (i-1)! \ (1\leqslant i\leqslant n) \]

本文作者为小蒟蒻:zhangshaojia

转载请注明原文链接。

码字不易,求关照,谢谢!

原文地址:https://www.cnblogs.com/zhangshaojia/p/15200499.html