BZOJ4870 - [Shoi2017]组合数问题

BZOJ4870 - Click Here

  

Description

  

Input

  第一行有四个整数 n, p, k, r,所有整数含义见问题描述。

  1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30-1

  

Output

  一行一个整数代表答案。

  

Solutions

  注意到数据范围$r<k$,因此此题实质上是求$\sum \binom{i}{j}, \, j\equiv r(mod \, k)$

  尝试推一推式子,由于$i,j>0$,根据对称恒等式

  $\sum \binom{i}{j}=\sum (\binom{i-1}{j}+\binom{i-1}{j-1})=\sum \binom{i-1}{j}+\sum \binom{i-1}{j-1}, \, j \equiv r(mod \, k)$

  

  由于$j \equiv r(mod\, k)$,所以$(j+k-1) \equiv (r+k-1) \, (mod\, k)$

  也就是说,我们并不关心$\binom{i}{j}$是多少,只关心$\sum \binom{i}{j}, \, j\equiv r(mod\, k)$,包括推导过程

  

  因此,可以得到一个dp方程,用$f(i,j)$表示$\sum \binom{i}{j}, \, j \equiv r(mod \, k)$

  然后易得转移方程$f(i,j)=f(i-1,j)+f(i-1,(j+k-1)\, mod \, k)$

  线性递推式,矩阵乘幂优化一下就好了。

  

  时间复杂度$O(k^3log\,nk)$

  P.S. 网上的主流做法,是将组合数看做取小球问题,然后直接得到转移方程。QAQ

  

CODE

CODE - Click Here

本站总访问量次 | 本站访客数人次

Powered by Hexo | Designed by iTimeTraveler | Refined by CSHwang