逆元

啥是逆元?

a×x1(modp)a\times x\equiv 1\pmod{p}gcd(a,p)=1\gcd(a,p)=1,那么我们就定义xxaa在模pp下的逆元,记为a1a^{-1}
所以,对于ab(modp)\frac{a}{b}\pmod{p},我们先求助b1b^{-1},再乘上aa,再modp\bmod p,就是这个分数了。

给定nnpp,求nn在模pp下的逆元。(pp是质数)

这里可以用费马小定理求解。

众所周知aφ(p)1(modp)a^{\varphi(p)}\equiv 1\pmod{p},若gcd(a,p)=1\gcd(a,p)=1

又众所周知若pp是质数,φ(p)=p1\varphi(p)=p-1,上式变为ap11(modp)a^{p-1}\equiv 1\pmod{p}

则有(假设pp是质数):

a×x1(modp)a\times x\equiv 1\pmod{p}

a×xap1(modp)a\times x\equiv a^{p-1}\pmod{p}

a×xap2(modp)a\times x\equiv a^{p-2}\pmod{p}

这里的ap2a^{p-2}就是aa在模pp下的逆元。

给定nnpp,求11nn在模pp下的逆元。(pp是质数)

zcysky:逆元有线性递推的公式,推一下就好了呀。
首先有对于pPrime\forall p\in Prime,设invninv_nnn在模pp下的逆元,则inv1=1inv_1=1

invi+1=invpmodimodp×(ppi)inv_{i+1}=inv_{p\bmod i}\bmod p\times (p-\left\lfloor\dfrac{p}{i}\right\rfloor)