数学数论模逆元On this page模逆元参考资料 模逆元 - OI Wiki 【笔记】常见逆元计算方法总结 - 洛谷专栏 定义 如果线性同余方程 ax≡1(modp)ax\equiv 1\pmod pax≡1(modp),则 xxx 称为 aaa 在模 ppp 意义下的 逆元(Inverse),记为 x=a−1x=a^{-1}x=a−1。 快速幂法 根据费马小定理(Fermat's Little Theorem): aap−2=ap−1≡1(modp)aa^{p-2}=a^{p-1}\equiv 1\pmod paap−2=ap−1≡1(modp) x=ap−2x=a^{p-2}x=ap−2 快速幂:Pow(a,mod-2)。 详见 快速幂。 扩展欧几里得算法 如果 ax≡1(modp)ax\equiv 1\pmod pax≡1(modp),说明存在整数 x,yx,yx,y 满足 ax+py=1ax+py=1ax+py=1。 扩展欧几里得算法:exgcd(a,mod)。 详见 最大公约数。 线性逆元 p mod i=p−⌊pi⌋⋅ip mod i≡−⌊pi⌋⋅i(modp)i−1⋅(p mod i)≡−⌊pi⌋(modp)i−1≡−⌊pi⌋(p mod i)−1(modp)\begin{aligned} & p\bmod i=p-\left\lfloor\frac{p}{i}\right\rfloor\cdot i \\ & p\bmod i\equiv-\left\lfloor\frac{p}{i}\right\rfloor\cdot i\pmod p \\ & i^{-1}\cdot(p\bmod i)\equiv-\left\lfloor\frac{p}{i}\right\rfloor\pmod p \\ & i^{-1}\equiv-\left\lfloor\frac{p}{i}\right\rfloor(p\bmod i)^{-1}\pmod p \end{aligned}pmodi=p−⌊ip⌋⋅ipmodi≡−⌊ip⌋⋅i(modp)i−1⋅(pmodi)≡−⌊ip⌋(modp)i−1≡−⌊ip⌋(pmodi)−1(modp) 98 Bcppll inv[N];void init(){ for(int i=1;i<N;i++) { inv[i]=i==1?1:(mod-mod/i)*inv[mod%i]%mod; }} 例题 Problemcode洛谷 P3811 【模板】模意义下的乘法逆元给定两个整数 n,pn,pn,p,求 1∼n1\sim n1∼n 中所有整数在模 ppp 意义下的乘法逆元。(n≤3×106,n<p<20000528n\le3\times10^6,n<p<20000528n≤3×106,n<p<20000528) 保证 ppp 是质数。 Problemcode洛谷 P5431 【模板】模意义下的乘法逆元 2给定 nnn 个正整数 aia_iai,求它们在模 ppp 意义下的乘法逆元。 由于输出太多不好,所以将会给定常数 kkk,你要输出的答案为: ∑i=1nkiai\sum\limits_{i=1}^n\frac{k^i}{a_i}i=1∑naiki 答案对 ppp 取模。 Problemcode洛谷 P2613 【模板】有理数取余给出一个有理数 c=abc=\frac{a}{b}c=ba,求 c mod 19260817c \bmod 19260817cmod19260817 的值。 这个值被定义为 bx≡a(mod19260817)bx\equiv a\pmod{19260817}bx≡a(mod19260817) 的解。 Problemcode洛谷 P1082 [NOIP 2012 提高组] 同余方程求同余方程 ax≡1(modb)ax\equiv1\pmod bax≡1(modb) 的最小正整数解。(a,b≤2×109a,b\le2\times10^9a,b≤2×109)