
传送门
Solution
记$a=lfloorfrac n prfloor$,$b=n%p$。我们尝试使用Lucas定理展开这些组合数,寻找公共部分。以下除法都作整数下取整除法:
$$
begin{aligned}
f(n,k)&=sum_{i=0}^kC_n^imod p\
&=sum_{i=0}^{ap-1}C_{n/p}^{i/p}_C_{n%p}^{i%p}+sum_{i=ap}^{n}C_{n/p}^{i/p}_C_{n%p}^{i%p}\
&=(sum_{i=0}^{a-1}C_{n/p}^i_sum_{j=0}^{p-1}C_{n%p}^j)+C_{n/p}^{a}_sum_{i=0}^bC_{n%p}^i\
&=f(n/p,a-1)*f(n%p,p-1)+C_{n/p}^{k/p}f(n%p,k%p)
end{aligned}
$$
由于模数较小,我们只需要预处理$f(0…p-1,0…p-1)$的值就可以直接计算了。
注意判断k<0的情况,此时$f$为0。
Code
1 |
|




近期评论