浅谈乘法逆元的三种解法

这里以一道求乘法逆元模板题【洛谷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(
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值