Processing math: 73%

乘法逆元

乘法逆元

用途

oi比赛中,比较常用的算法就是快速幂了,但是快速幂有一定的缺点比如他只能处理乘法,加法,减法,唯独不能处理除法,也很令人麻烦,此时就需要用到逆元的操作了,此若ax1(mod b)ab互质,那么我们就能定义: x为(a)的逆元,记为a1,所以我们也可以称xa的倒数,当我们快速幂的时候如果遇到abmod  m的情况,就可以将1b换成b关于m逆元即b,这样就可以进行快速幂的运算了。

求法

乘法逆元共三种情况,每种情况都有其特有的优缺点。

  1. 首先就是采用扩展欧几里得的方法来求同余方程,ax1(mod b)这个式子可以等价于ax+by=1这个方程的解,所以我们只需求出x来就行。 (比较通用)

  2. 其次就是采用费马小定理+快速幂来求,但是这个条件比较苛刻,需要上文中的b是个质数,这时我们根据费马小定理可以得出ab11(mod b) —> aab21(mod b) 此时x就是ab2就是逆元,此时就可以用快速幂来解了。但是这个还是有点慢,不过在比赛中一般模数都是质数,所以也比较常用。

  3. 当要处理比较多的数的时候,可以采用线性推的方法,这个在求多个数的逆元上比较舒服。首先我们需要推一下,首先我们有一个,111(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)

    这种题不太常见,一般出现在多种数据之中,比如洛谷的模板

posted @   DAGGGGGGGGGGGG  阅读(224)  评论(0编辑  收藏  举报
编辑推荐:
· 一次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种常用方案!
点击右上角即可分享
微信分享提示