浅谈乘法逆元的三种解法

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

这里以一道求乘法逆元模板题【洛谷3811】【模板】乘法逆元)为例,来讲一讲求一个数乘法逆元的三种经典解法。


解法一:快速幂

证明: 费马小定理。由费马小定理 a p − 1 ≡ 1 ( m o d a^{p-1}≡1(mod ap11(mod p ) p) p)可得, a ∗ a p − 2 ≡ 1 ( m o d a*a^{p-2}≡1(mod aap21(mod p ) p) p),显然,我们可以发现 a p − 2 a^{p-2} ap2就是 a a a在模 p p p意义下的逆元。只要用快速幂就可以快速求出。

L i n k Link Link

快速幂详见博客快速幂算法详解
费马小定理详见博客筛素数方法(二)—— 费马小定理及MR素数判断

代码:

#include<bits/stdc++.h>
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)<(y)?(x):(y))
#define LL long long
#define swap(x,y) (x^=y,y^=x,x^=y)
using namespace std;
int n,m;
inline char tc()
{
   
   
    static char ff[100000],*A=ff,*B=ff;
    return A==B&&(B=(A=ff)+fread(ff,1,100000,stdin),A==B)?EOF:*A++;
}
inline void read(int &x)
{
   
   
    x=0;int f=1;char ch;
    while(!isdigit(ch=tc())) f=ch^'-'?1:-1;
    while(x=(x<<3)+(x<<1)+ch-'0',isdigit(ch=tc()));
    x*=f;
}
inline void write(int x)
{
   
   
    if(x<0) putchar('-'),x=-x
使用moveit中的报错及解决 1.fatal error: moveit/move_group_interface/move_group.h: 没有那个文件或目录。// #include <moveit/move_group_interface/move_group.h> 改为。问题1 moveit/move_group_interface/move_group.h: 没有那个文件或目录。在运行c++程序时报错。 阅读详情

相关推荐

高通Camera IFE时钟配置

高通Camera IFE时钟配置中的minHorizontalBlanking和minVerticalBlanking配置计算方法

一个懒癌的驱动工程师的随笔分享 6143

乘法逆元3种方法总结[最全]

若ax≡1 mod f, 则称a关于1模f的乘法逆元为x。也可表示为ax≡1(mod f)。 当a与f互素时,a关于模f的乘法逆元有解。如果不互素,则无解,但是有其他方法实现相同功能。如果f为素数,则从1到f-1的任意数都与f互素,即在1到f-1之间都恰好有一个关于模f的乘法逆元 本文讲详细解释:什么是逆元,为什么要求逆元?扩展欧几里得算法讲解;求逆元三种方法;了解基本知识后,我们来求逆元: 求逆元分为两类:==**2.a p 互质时:**= ==1.a p 不互质时逆元无解== 可用此公式实现相同功能:

卖炫迈的小男孩的博客 8521

在YOLO中扩充新类别并且不影响旧类的识别精度

让我们先从简单的部分开始:用我们的新类训练自定义 YOLOv8 模型。在本教程中,我们将向模型添加车牌类。我们将使用Roboflow 中的一个数据集。这个数据集有两个车牌类。在开始训练之前,我们还必须对库进行一些更改。为了节省时间,我还将本教程中我们将进行的更改转换为补丁该补丁包含多项更改,但大多数更改都用于指南的下一部分。if RANK!= -1:是的,我们将编写一个回调。我们希望将此自定义训练模型的头部与 COCO 预训练模型中的旧头部一起使用。

如果想成为中心,那么就到中心去吧。 1193

乘法逆元超详解

乘法逆元超详解:费马小定理,扩展欧几里得,线性求乘法逆元

weixin_62599885的博客 6645

乘法逆元及其求法

一、相关定理介绍1.乘法逆元如果ax≡1 (mod p),且gcd(a,p)=1(a与p互质),则称a关于模p的乘法逆元为x。下文中,x都表示乘法逆元。2.费马小定理假如a是一个整数,p是一个质数,那么是p的倍数,可以表示为或者写作:3.扩展欧几里得定理已知整数a、b,扩展欧几里得算法可以在求得a、b的最大公约数的同时,能找到整数x、y(其中一个很可能是负数),使它们满足贝祖等式。二、乘法逆元的求...

Norstc的博客 4万+

数论 - 多种方法求乘法逆元

乘法逆元的5种方法 求正整数a关于1模p的的乘法逆元,即求满足ax≡1(mod p)的正整数解x。求正整数a关于1模p的的乘法逆元,即求满足ax≡1(mod\ p)的正整数解x。求正整数a关于1模p的的乘法逆元,即求满足ax≡1(mod p)的正整数解x。 文章目录求乘法逆元的5种方法一、扩展欧几里得算法(O(logP))扩展欧几里得算法(O(logP))扩展欧几里得算法(O(logP))二、费马小定理(O(logP))二、费马小定理(O(logP))二、费马小定理(O(logP))三

njuptACMcxk的博客 755

乘法逆元(inverse element)及四大相关求法详解(含证明)

若整数 a,m 互质,并且对于任意的整数 b,如果满足 a | b ( a 能整除 b ),则存在一个整数 x,使得 b/a ≡ bx ( mod m ) ,则称 x 为 a 模 m 的乘法逆元,记为 a^{−1}( mod m ) 或者 inv( a )。

qq_63786973的博客 1万+

【BZOJ1965】[AHOI2005] SHUFFLE 洗牌(数学题)

点此看题面 大致题意: 有一叠扑克牌编号为1∼n1\sim n1∼n(nnn为偶数),每次洗牌将扑克牌平均分成上下两叠,取下面一叠的第一张作为新的一叠的第一张,然后取上面一叠的第一张作为新的一叠的第二张,再取下面一叠的第二张作为新的一叠的第三张……如此交替直到所有的牌取完。问mmm次洗牌后第lll张扑克牌的编号。 数学题 n,mn,mn,m这么大,比较显然是一道数学题。 设当前位置为xxx,则不...

CXR的博客 514

同余问题(一)——扩展欧几里得exgcd

前言 扩展欧几里得算法是一个很好的解决同余问题的算法,非常实用。 欧几里得算法 简介 欧几里得算法,又称辗转相除法。 主要用途 求最大公因数gcdgcdgcd。 公式 gcd(a,b)=gcd(b,a%b)gcd(a,b)=gcd(b,a\%b)gcd(a,b)=gcd(b,a%b) 公式证明 aaa可以表示成a=kb+a%ba=kb+a\%ba=kb+a%b(kkk为自然数)。 假设ggg是a...

CXR的博客 693

乘法逆元求解

二、求逆元的方法。

qq_73186155的博客 1650

乘法逆元的计算

计算乘法逆元是学习加密算法的基础,在 RSA、ECC 和 AES 加密算法中都会用到,在网上提供的方法也有,比如扩展欧几里德算法等,看了以后要根据它提供的示例去推导也是有困难的,关键是自己太渣了。以前以为加密算法的基础是数学,后来才知道不是数学,而是数论。无路可逃啊! 乘法逆元的概念 模 n 乘法逆元:对于整数 a、n,如果存在整数 b,满足 ab mod n = 1,则说,b 是 a 的模 n 乘法逆元。a 存在模 n 的乘法逆元的充要条件是 gcd(a, n) = ...

码农UP2U 1747

初等数论-----乘法逆元

在取模运算中 有如下定理: 注意:在加法运算中要注意最后结果可能为负数,所以要在最后加上要取模的数; 上述定理只在乘法和加法中有效,在除法中一般是无效的 所以在运算中引入了逆元运算 在计算 a/b = x(mod p) 中 并不等于 (a%p) / (b%p) = x; 但是在运算中可能数字比较大,必须将a取模 这时引入了逆元 怎么实现呢 就是将除法转化为乘法 即 将a/b = a *(b的逆元) = x(mod p); 这里需要注意的是 逆元并不是一定存在的 ,简单证明 、 a/b..

m0_58381738的博客 742

无数种求逆元的方法总结

乘法逆元 对于缩系中的元素,每个数a均有唯一的与之对应的乘法逆元x,使得ax≡1(mod n) 一个数有逆元的充分必要条件是gcd(a,n)=1,此时逆元唯一存在 逆元的含义:模n意义下,1个数a如果有逆元x,那么除以a相当于乘以x。 下面给出求逆元的几种方法: 1.扩展欧几里得 给定模数m,求a的逆相当于求解ax=1(mod m) 这个方程可以转化为ax-my=1 然后套用求二...

xuanweiace的博客 1万+

乘法逆元解法大全】

目录定义模板题法一法二法三应用 定义 若a∗x≡1(mod  p)a*x≡1 (mod\;p)a∗x≡1(modp),且 aaa 与 ppp 互质,那么我们就能定义: xxx 为 aaa 的逆元,记为 a−1a^{-1}a−1,所以我们也可以称 xxx 为 aaa 的倒数( modmodmod ppp 意义下)。 所以对于 ab   mod  p\frac{a}{b}\ \; mod\;pba​ modp ,我们就可以求出 b 在 mod  pmod\; pmodp意义下的逆元,然后乘上

在人间贩卖声音 1562

乘法逆元的四种求法(拓展欧几里得、费马小定理、递归、递推)

前言 逆元:如果a∗x≡1(mod p)a*x\equiv1(mod\ p)a∗x≡1(mod p),且a与p互质,则称x是a关于p的逆元。 对于这个概念和倒数有本质的区别,因为除法不能将mod数化进去。引用一个例子: (a +  b) % p = (a%p +  b%p) %p  (对) (a  -  b) % p = (a%...

小胡同的诗 1797

乘法逆元通俗易懂的理解方法

最近,发现数论真的很重要,基本上一套题必出一个数论的题。故接下来,要好好的看一看数论了。 乘法逆元我觉得其本质:就是数论里的倒数。 由上图你会发现:其取模的运算不满足除法的分配律,那么如何求除法的模运算呢? 在我们普通的数学中: 要求 a / b 可以转化为 a x b-1 其中 b x b-1 = 1 ,其中 b-1 称为b的倒数。 那么同理,在数论我们可不可以用上面的那种方法来求b的类似于倒数的数,来将其转换为乘法呢? 答案: 是肯定的,不过在数论里称为乘法逆元。 有的小.

辉小歌的博客 1万+

求模N下的乘法逆元

逆元的定义:在群G中,任意一个元素a

ZT在努力 4080

乘法逆元】看这一篇就够了!乘法逆元的证明、详解及应用。

费马小定理是一个重要的数论定理,不同的a对应的a^(p-1)除以p的余数各不相同。因此,我们可以利用费马小定理求解乘法逆元。如果p是质数,那么a在模p意义下的乘法逆元为a^(p-2)。快速幂算法,对于阶乘逆元,我们可以先使用费马小定理求解p的逆元,然后推导出其他阶乘的逆元。通过这种方法,我们可以快速求解连续自然数的逆元。对于非连续数字的逆元,我们可以使用快速幂算法,复杂度为O(n),其中n是非连续数字的个数。具体实现中,我们先设定第一个数字的逆元为1,然后利用费马小定理和递推关系求解其他数字的逆元

2301_76371934的博客 6611

【数论】乘法逆元(求逆元三种方式)

乘法逆元的概念,求解逆元三种方式

2401_87820834的博客 1434

学习笔记:逆元

如果 ax≡1 (mod p),那么,x就是a的逆元,相互的,a也是x的逆元。那么你逆元有什么用呢? 首先我们需要知道,取余运算对除法是不适用的,a/b % p ≠ (a%p / b%p) %p,如果我们要计算若干个数相乘起来除以某个数时,并不能像乘法那样边乘边取余, 所以我们可以将a/b%p转化为 ab-1%p (b-1是指b在模p下的逆元,不是b的-1次方),这样就可以边乘边取余 逆元的求法: 方法一:欧拉函数 int power(int a,int b,int p) { int res=1%p;

HeartWine的博客 588
上一篇: 【洛谷1341】无序字母对(欧拉回路)
下一篇: 树链剖分学习笔记
chenxiaoran666
博客等级 码龄9年 81粉丝 169原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值