定义
对于一个数a和模m,存在一个数x,使得:
则x是a在模m下的逆元。只有当a和m是互质时(即 gcd(a,m)=1),才存在这样的逆元x。
实现
快速幂算法
费马小定理:如果p是一个质数,而整数a不是p的倍数,则有a^(p-1)≡1(mod p)。
推论:a^(-1)≡a^(p-2)(mod p)
int fast_pow(int a,int b);
int mod_inverse(const int a,const int p)
{
return fast_pow(a,p-2);
}扩展欧几里得算法
void extended_gcd(const int& a, const int& b, int& x, int& y) {
if (b == 0)
{
x = 1, y = 0;
return;
}
extended_gcd(b, a % b, y, x);
y -= a / b * x;
}