最新乘法逆元通俗易懂的理解方法,C C++面试项目全代码

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

答案: 是肯定的,不过在数论里称为乘法的逆元。
在这里插入图片描述
有的小伙伴可能初学,不太懂上面的专业术语,故这里解释一下。
上面定义的解释: 上面的那个三条线的符号是同余, 意思就是说 a乘于x取模 和 1 取模是同余的都是1,即余数是相同的。
例子:
2 x 3 ≡ 1 (mod 5 ) 即 2 x 3 对 5 取模和 1 对 5 取模是同余的 都是1 。 其中 3就是 2的乘法逆元。
实战:
在这里插入图片描述
你会发现: 我们运用乘法逆元,将其除法变成了一个乘法。这是十分的方便的,尤其是涉及到高精度或者其它的一些情况。

那么,问题来了。如何求一个数的乘法逆元呢?

求乘法逆元的方法有很多,这里先介绍通过运用费马小定理来求逆元。
在这里插入图片描述
ap-1 ≡ 1 (mod p ) 等价于 a x ap-2 ≡ 1 (mod p ) 故a的乘法逆元就是 ap-2
注意:乘法逆元不一定是存在的。
a 存在乘法逆元的充要条件是 a 与模数 p 互质。当模数 p 为质数时,ap−2 即为 a 的乘法逆元。

练习题:876. 快速幂求逆元
在这里插入图片描述
https://www.acwing.com/problem/content/878/

#include<cstdio>
#include<iostream>
using namespace std;
typedef long long int LL;
LL quick\_pow(LL a,LL b, LL p)
{
    LL res=1;
    while(b)
    {
        if(b&1)  res=res\*a%p;
        a=a\*a%p;
        b>>=1;
    }
    return res;
}
LL gcd(LL a, LL b)
{
    if(b==0) return a;
    else return gcd(b,a%b);
}
int main(void)
{
    LL t,a,p; cin>>t;
    while(t--)
    {
        cin>>a>>p;


![img](https://img-blog.csdnimg.cn/img_convert/aa6f6d4a39d74ae26b133be9cfcb3464.png)
![img](https://img-blog.csdnimg.cn/img_convert/8234c61e796c0ca91a8683cd691370d2.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值