三种求逆元方法小结

逆元(自学内容)

定义:若 ax1modf, 则称 a 关于 1f 的乘法逆元为 x 。也可表示为 ax1(modf)
当a与f互素时,a关于模f的乘法逆元有解。
如果不互素,通过公式‘a/b mod p = (a mod (b·p))/b’来转化
计算逆元方式:(条件a,p互质)

  1. 费马小定理( ap1≡1(mod p))(a,p互质时,afine(p)=1(modp))
    变形为a * ap2≡1(mod p)
    因为逆元x定义为a*x≡1(mod p),
    所以x=ap2 (mod p)(可用快速幂求)

证明费马小定理:数学归纳法
(x+1)p=xp+1 (mod p)
证明2:aφ(p)
{x1,x2,x3……xfine(p)} <=> {ax1,ax2,……axfine(P)}
两边集合乘起来:
ΠxΠxafine(p) (mod p)
0Πxafine(p)1
∵Πx 与 p互质,∴afine(p)1是p的倍数
afine(p)1 (mod p)

  1. 拓展欧几里得算法(exgcd)
    用于求解模数p不是质数时的逆元。
    ax1(mod p) 可变形为 axkp=1
    然后就可以用exgcd来求了。复杂度 O(logn)

  2. 阶乘逆元
    线性递推求阶乘:jci=jci1×i % mod
    用费马小定理求 n! 的逆元 invn=qpow(n,mod2)
    那么

jcn×invn%mod=1jcn1×n×invn%mod=1invn1=invn×n

于是就可以递推求阶乘逆元,O(n) 预处理,O(1) 询问。

posted @   花子の水晶植轮daisuki  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
https://blog-static.cnblogs.com/files/zouwangblog/mouse-click.js
点击右上角即可分享
微信分享提示