组合数前缀和计算
记录一下,下文的除法非特殊注明都是向下取整。
求 \(F(n, k) = \sum_{i=0}^{k}\binom{n}{i}\pmod p\)。
首先使用卢卡斯定理。
\[\begin{aligned}
&\sum_{i = 0}^{k}\binom{n}{i}\\
=&\sum_{i = 0}^{k}\binom{\frac{n}{p}}{\frac{i}{p}}\binom{n \bmod p}{i \bmod p}\\
=&\sum_{j=0}^{p-1}\binom{n \bmod p}{j}\sum_{i = 0}^{k}[i\bmod p=j]\binom{\frac{n}{p}}{\frac{i}{p}}\\
=&\sum_{j=0}^{p-1}\binom{n \bmod p}{j}\sum_{i = 0}^{\frac{k-j}{p}}\binom{\frac{n}{p}}{i}\\
=&\sum_{j=0}^{p-1}\binom{n \bmod p}{j}F(\frac{n}{p},\frac{k - j}{p})\\
\end{aligned}\]
然后考虑 \(\dfrac{k - j}{p}\) 的取值,只有 \(\dfrac{k}{p}\) 和 \(\dfrac{k}{p}-1\) 两种,在 \(j\in [0,k \bmod p]\) 的时候取到 \(\dfrac{k}{p}\),否则取到 \(\dfrac{k}{p}-1\)。
那么只需要计算两个即可,前面的预处理较小范围的组合数前缀和可以直接算。
时间复杂度 \(O(2^{\log_p n})\)。
注意到 \(F(n,k)=F(n,k-1)+\binom{n}{k}\),这一步使用卢卡斯定理在 \(O(\log n)\) 的时间内求出可以做到 \(O(\log^2 n)\)。
例题有 P4345 [SHOI2015]超能粒子炮·改和[ABC251Ex] Fill Triangle。
莫队计算方法:
我们只需要能计算 \(F(n, k)\) 到 $F(n, k + 1) $ 和 \(F(n + 1, k)\) 即可。
第一个是简单的,加一个组合数即可。
第二个考虑看杨辉三角上,发现 \(F(n,k)+F(n,k)-\binom{n}{k}=F(n+1,k)\)。