乘法逆元
定义
若ax≡1modpax≡1modp,则称xx是在modpmodp意义下的逆元,记为x≡a−1modpx≡a−1modp
当然,aa也是在modpmodp意义下的逆元
ab=a⋅b−1ab=a⋅b−1
几乎所有模意义下的除法都需要逆元
有逆元的充要条件
aa在意义下有逆元的充要条件:(a,p)=1(a,p)=1
逆元的求法
EXGCD
若求aa在意义下的逆元,则可以转化为求解如下方程
ax+py=1ax+py=1
有EXGCD的相关知识可以得到,当且仅当(a,p)=1(a,p)=1时有解(有逆元的充要条件的证明)
费马小定理
如果pp为质数,则
∴a⋅ap−2≡1∴a⋅ap−2≡1
∴ap−2≡a−1∴ap−2≡a−1
欧拉定理
将费马小定理中的p−2p−2换为φ(p)−1φ(p)−1即可
pp可以不是质数
递推
用于预处理[1⋯n][1⋯n]的逆元
构造p=ki+rp=ki+r
∴ki+r≡0modp∴ki+r≡0modp
∴ki=−r∴ki=−r
∴i−1=−k⋅r−1∴i−1=−k⋅r−1
其中k=⌊pi⌋,r=p%ik=⌊pi⌋,r=p%i
∴i−1=−⌊pi⌋⋅inv[p%i]∴i−1=−⌊pi⌋⋅inv[p%i]
为了防止出现负数,通常的写法是这样的
inv[i]=(mod-mod/i)*inv[mod%i]%mod;
本文详细介绍了乘法逆元的概念及其在模运算中的作用。包括逆元的定义、求法如扩展欧几里得算法(EXGCD)、费马小定理及欧拉定理的应用,以及如何通过递推方式快速预处理逆元。
507

被折叠的 条评论
为什么被折叠?



