板子:
x即为最终答案,x可能为负数,加模数即可
乘法逆元 - OI Wiki (oi-wiki.org)
void exgcd(int a, int b, int& x, int& y) {
if (b == 0) {
x = 1, y = 0;
return;
}
exgcd(b, a % b, y, x);
y -= a / b * x;
}
使用:
exgcd(a, n + 1, x, y);//x就是逆元
while (x <= 0)x += n + 1;
原理:
最大公约数 - OI Wiki (oi-wiki.org)
拓展欧几里得算法:
int Exgcd(int a, int b, int &x, int &y) {
if (!b) {
x = 1;
y = 0;
return a;
}
int d = Exgcd(b, a % b, x, y);
int t = x;
x = y;
y = t - (a / b) * y;
return d;
}