首页 > 其他分享 >乘法逆元及其三种求法

乘法逆元及其三种求法

时间:2023-08-12 17:23:25浏览次数:32  
标签:int ret times 求法 逆元 乘法 equiv mod

什么是逆元?

如果 \(ax\equiv 1(\mod p)\),且 \(a\) 与 \(p\) 互质 \(\gcd(a,p)=1\),则 \(x\) 是 \(a\) 在模 \(p\) 意义上的逆元,也就是 \(a\equiv x^{-1} (\mod p)\)。

\(\mathcal{first}\).费马小定理求逆元

我们知道费马小定理是:\(a^{p-1}\equiv 1(\mod p)\)。
两边同时乘上 \(a^{-1}\),就转换成 \(a^{p-2}\equiv a^{-1}(\mod p)\)。用一个快速幂即可得到 \(a\) 的逆元。

int pow(int a, int b, int p){
    int ret=1;
    while(b){
        if(b&1)
            ret=(ret*a)%p;
        a=(a*a)%p;
        b>>=1;
    }
    return ret;
}
int inv(int a, int p){
    return pow(a,p-2,p);
}

\(\mathcal{second}\).拓展欧几里得求逆元

我们知道,拓展欧几里得是用来求解 \(ax+py=\gcd(a,p)\),又因为 \(p\) 是质数,即 \(ax\equiv 1(\mod p)\)。所以方程的 \(x\) 就是 \(a\)的逆元。


void exgcd(int a,int b){
  	if(!b){x=1,y=0;return ;}
  	exgcd(b,a%b);
  	int t=x;
 	 x=y,y=t-a/b*y;
}
int main(){
  	int n,p;
  	scanf("%d%d",&n,&p);
  	exgcd(i,p);
  	cout<<(x%p+p)%x;
  	return 0;
}

third.线性推逆元

首先我们设,\(k=\lfloor{\frac{p}{i}}\rfloor,r=p\mod i\),那么就能知道 \(k\times i+r\equiv 0(\mod p)\)。

然后我们将等式两边同时乘上 $i^{-1} r^{-1} $,就能得到 \(k\times r^{-1}+i^{-1}\equiv 0(\mod p)\)。

把 \(k\times r^{-1}\) 移到右边去,即 \(i^{-1} \equiv -k\times r^{-1}(\mod p)\)。

也就是 \(i^{-1}\equiv -\lfloor{\frac{p}{i}}\rfloor\times(p\mod i)^{-1} (\mod i)\)。

inv[1]=1;
for(int i=2;i<p;++i)
    inv[i]=(p-p/i)*inv[p%i]%p;

标签:int,ret,times,求法,逆元,乘法,equiv,mod
From: https://www.cnblogs.com/pdpdzaa/p/17623588.html

相关文章

  • 定点补码乘法器小记
    目录硬件模拟软件无脑乘Booth乘法器华莱士树优化的华莱士树参考链接:《计算机体系结构基础第三版》定点补码乘法器一生一芯学习讲义一生一芯视频号硬件模拟软件软件方式即类似我们手工计算,如计算1101*0101+00001101(乘数最低位1,结果加上被乘数。将乘数右移,被乘数左移)+0......
  • 扩展欧几里得算法与乘法逆元
    Part1:前置知识欧几里得算法\[\foralla,b\in\mathbb{N},\gcd(a,b)=\gcd(b,a\bmodb)\]\(\mathrm{Bézout}\)定理对于任意整数\(a,b\),存在一对整数\(x,y\),满足\(ax+by=\gcd(a,b)\)证明:在欧几里得算法的最后一步,即\(b=0\)时,显然有一对整数\(x=1,y=0\),使得\(a......
  • 矩阵乘法
    前言目前感觉主要就是矩阵加速,一般·看到大一点的范围(加小一点的范围)可能会用到,是一个神奇的东西。运用在广义矩阵和状态转移上面。板子还是打得比较舒服的。广义矩阵乘法具有结合律的条件是分别满足交换律和结合律,内层对外层满足分配律。[NOIOnline#1入门组]魔法题目描......
  • 矩阵乘法 笔记
    众所周知,数是可以进行加减乘除的,那矩阵为啥不可以呢?假设现在我们有两个矩阵\(A\)和\(B\),矩阵大小分别为\(n\timesm\)和\(x\timesy\),矩阵元素对\(mod\)取模。基本运算矩阵加法令\(A+B=C\)。要求:\(n=x\)并且\(m=y\)。其实很简单,就是一一对应着加就行,即......
  • 逆元
    前言:依旧,和动态规划一样,逆元这个问题一直困扰了我很久,很烦人。逆元属于数学问题,要和费马以及欧几里得扯上关系,第一次学习的时候就不是特别懂,造成了很大的问题,遇到有些题目特别是求期望等数学问题最后通常要求mod998244353,其实,整数还好,没啥问题,一遇到小数的模运算,就需要用到逆......
  • 哈希区间求法
    哈希区间求法求cd得哈希值那么就是abcd减ab......
  • 高维矩阵乘法学习总结
    参考:【深度学习中的数学】高维矩阵乘法规则【全面理解多维矩阵运算】多维(三维四维)矩阵向量运算-超强可视化baseKnowlegde:高维矩阵相当于二维矩阵的顺序堆叠相同维度数目举例:Ashape[a,b,c,d],Bshape[e,f,g,h]For高维(除第一维和第二维之外)长度相同:(eg.\(a......
  • 通过求逆元的几种方式复习基础数论
    逆元若\(ax=1\pmodp\),那么称\(a\)是\(x\)的逆元,显然\(x\)也是\(a\)的逆元。两边同时除以\(a\)得到\(x=\frac1a\pmodp\),可以写成\(x=a^{-1}\pmodp\),这么看来,乘法逆元就是取模意义下的倒数啊。若\(p\)为质数,\(0\)没有逆元,\(1\)的逆元是\(1\),\(p-1\)的逆元......
  • 逆元
     同余:简单来说就是在除法中取模要找到其逆元 逆元:如果一个线性同余方程ax≡1(modb),则x称为amodb的逆元简单来说就是modb是一种环境,而所求的x是a在modb环境中的倒数 以下是求逆元的法子扩展欧几里得法求逆元,时间复杂度o(logn)1voidexgcd(inta,intb,......
  • HJ70 矩阵乘法计算量估算
    1.题目读题HJ70 矩阵乘法计算量估算  考查点 2.解法思路 代码逻辑 具体实现 3.总结......