1.什么是逆元
当求解公式:(a / b) % m 时,因b可能会过大,会出现爆精度的情况,所以需变除法为乘法:
设c是b的逆元,则有b * c≡1(mod m);
则(a / b) % m = (a / b) * 1 % m = (a / b) * b * c % m = a * c( mod m);
即a / b的模等于a * b的逆元的模;
逆元就是这样应用的;
2.求逆元的方法
(1)费马小定理
在是素数的情况下,对任意整数都有。
如果无法被整除,则有。
可以在为素数的情况下求出一个数的逆元,,即为逆元。
结果得出,x ^ (mod - 2) 即为x的逆元
(2)O(n)逆元打表
void init()
{
inv[1] = inv[0] = 1;
for (LL i = 2; i < maxn; i++)
inv[i] = (mod - mod / i) * inv[mod % i] % mod;
}
inv数组内即为逆元;
OVER!
参考博客:
https://blog.csdn.net/baidu_35643793/article/details/75268911#