线性求逆元

小知识来啦。

逆元是费马小定理的一个衍生物(算是吧),主要用于模运算中的除法运算。费马小定理是说假如有pP,lca(a,p)=1(P),那么ap11(modp)。换句话说,a×ap21(modp)。于是我们就会发现ap2(modp)就是逆元。

普通状态下我们可以用 O(logp)的快速幂求解,但有些时候题目要求线性求解(比如p到达106级别)时,就要用线性求逆元的方法了。

可以推一下公式:

假设inv为逆元函数(关于模数p),那么会有(逆元的定义):

aba×inv(b)(modp)

a×inv(a)1(modp)

t=pi,k=p%i,那么,

t×i+kp0(modp)

t×ik(modp)

t×i×inv(i)×inv(k)k×inv(i)×inv(k)(modp)

t×inv(k)inv(i)(modp)

又因为:

tpippi(modp)

结果就是:

inv(i)=(ppi)×inv(p%i)%p

于是就可以线性求解了。

posted @   Feyn618  阅读(289)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示