Vexoben
Jan 31, 2019
在一次比赛中因为不会线性处理一段区间的逆元被卡了52分.这里记下这个问题的解法.
(刷新以获取数学公式)
线性处理的逆元
inv[1] = 1;
for (int i = 2; i <= n; ++i) {
inv[i] = -mod / i * inv[mod % i] % mod + mod;
}
线性处理任意区间的逆元
上面一种方法不易扩展到任意区间,我们可以扩展线性处理逆元的另一种方法:
假设我们要处理区间在模意义下的逆元,可以先求出, 那么
计算的时候,先由费马小定理计算出,然后用递推即可.
一道例题
题意
计算
数据范围:, 答案模输出
题解
由数据范围可以想到关键是将和式转化为关于的递推式。
预处理到的逆元之后递推即可。