1. 程式人生 > 其它 >乘法逆元專題

乘法逆元專題

正常求逆元

由費馬小定理

\[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

轉載請註明原文連結。

碼字不易,求關照,謝謝!