乘法逆元
定义:若 a ∗ x ≡ 1 ( m o d b ) a*x \equiv 1 (\mod b) a∗x≡1(modb),则 x x x为 a a a在 m o d b \mod b modb下的逆元
作用:求 b a m o d p \frac{b}{a} \mod p abmodp,的 1 a \frac{1}{a} a1在 m o d p \mod p modp下的整数取值
求法:
扩展欧几里得:
前提: a ⊥ p a\perp p a⊥p(因为扩展欧几里得要求方程 a x + b y = 1 ax+by=1 ax+by=1的 a ⊥ b a \perp b a⊥b)
做法:若是要求 a ∗ x ≡ 1 ( m o d b ) a*x \equiv 1(\mod b) a∗x≡1(modb),其实就是要求 a x + b y = 1 ax+by=1 ax+by=1的 x x x的取值,扩展欧几里得求解即可
代码实现:
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define int long long
using namespace std;
void read(int &sum)
{
sum=0;char last='w',ch=getchar();
while (ch<'0' || ch>'9') last=ch,ch=getchar();
while (ch>='0' && ch<='9') sum=sum*10+ch-'0',ch=getchar();
if (last=='-') sum=