乘法逆元
乘法逆元
用途
在oi比赛中,比较常用的算法就是快速幂了,但是快速幂有一定的缺点比如他只能处理乘法,加法,减法,唯独不能处理除法,也很令人麻烦,此时就需要用到逆元的操作了,此若ax≡1(mod b),且a与b互质,那么我们就能定义: x为(a)的逆元,记为a−1,所以我们也可以称x为a的倒数,当我们快速幂的时候如果遇到abmod m的情况,就可以将1b换成b关于m逆元即b′,这样就可以进行快速幂的运算了。
求法
乘法逆元共三种情况,每种情况都有其特有的优缺点。
-
首先就是采用扩展欧几里得的方法来求同余方程,ax≡1(mod b)这个式子可以等价于ax+by=1这个方程的解,所以我们只需求出x来就行。 (比较通用)
-
其次就是采用费马小定理+快速幂来求,但是这个条件比较苛刻,需要上文中的b是个质数,这时我们根据费马小定理可以得出ab−1≡1(mod b) —> a∗ab−2≡1(mod b) 此时x就是ab−2就是逆元,此时就可以用快速幂来解了。但是这个还是有点慢,不过在比赛中一般模数都是质数,所以也比较常用。
-
当要处理比较多的数的时候,可以采用线性推的方法,这个在求多个数的逆元上比较舒服。首先我们需要推一下,首先我们有一个,1−1≡1(mod然后设p=k*i+r,r<i,1<i<p,再将这个式子放到\bmod {p}意义下就会得到:
k*i+r \equiv 0 (\bmod p)
然后乘上i^{-1}*r^{-1}就可以得到:
k*r^{-1}+i^{-1}\equiv 0 (\bmod p)
i^{-1}\equiv -k*r^{-1} (\bmod p)
i^{-1}\equiv -\lfloor \frac{p}{i} \rfloor*(p \bmod i)^{-1} (\bmod p)
这种题不太常见,一般出现在多种数据之中,比如洛谷的模板
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· “你见过凌晨四点的洛杉矶吗?”--《我们为什么要睡觉》
· C# 从零开始使用Layui.Wpf库开发WPF客户端
· 编程神器Trae:当我用上后,才知道自己的创造力被低估了多少
· C#/.NET/.NET Core技术前沿周刊 | 第 31 期(2025年3.17-3.23)
· 接口重试的7种常用方案!