推荐https://blog.youkuaiyun.com/qq_37656398/article/details/81434277
这几所说的乘法逆元其实是 模反元素(也叫模逆元)
a * a^-1 ≡ 1(mod p)(p为素数)
方法一, 扩展欧几里得求逆元:
扩展欧几里得,可以求逆元的原因:
假设a 与 x互逆(mod p):
a * x %p = 1;
等价于:
ax = py+1;
ax- py = 1;
这样就可以用扩展欧几里得解线性不定方程求逆元了
ll exgcd(ll a, ll b, ll &x, ll &y)// ax+by == gcd(a, b)
{
ll res;
if(b == 0)
{
x = 1;
y = 0;
return a;
}
res = exgcd(b,a%b, x, y);
ll tmp = y;
y = x- a/b*y;
x = tmp;