板子:
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;
}