題目連接:超能粒子炮·改php
這道題的大致思路就是用\(lucas\)定理,而後合併同類項,就能夠獲得一個能夠遞歸算的式子了。遞歸
咱們用\(S(n,k)\)表示答案,\(p\)表示模數(\(2333\)是一個質數),那麼有:get
\begin{aligned}
S(n,k)&=\sum_{i=0}^k\binom{n}{i} \\
&=\sum_{i=0}^k\binom{n\bmod p}{i \bmod p}\binom{\lfloor \frac{n}{p} \rfloor}{\lfloor \frac{i}{p} \rfloor}
\end{aligned}co
爲了接下來方便表示,不妨設\(k=k_1p+k_2(k_2<p)\)cas
咱們按\(\lfloor \frac{i}{p} \rfloor\)的值進行分類計算。因爲前面有\(k_1\)塊是滿的,最後一塊不滿,因此分兩部分計算。tar
\begin{aligned}
S(n,k) &=\sum_{i=0}^k\binom{n\bmod p}{i \bmod p}\binom{\lfloor \frac{n}{p} \rfloor}{\lfloor \frac{i}{p} \rfloor} \\
&=\sum_{i=0}^{k_1-1}\binom{\lfloor \frac{n}{p} \rfloor}{i}\sum_{j=0}^{p-1}\binom{n \bmod p}{j}+\sum_{i=k_1p}^k\binom{n \bmod p}{i \bmod p}\binom{\lfloor \frac{n}{p} \rfloor}{\lfloor \frac{i}{p} \rfloor} \\
&=S(\lfloor \frac{n}{p} \rfloor,k_1-1)S(n \bmod p,p-1)+\binom{\lfloor \frac{n}{p} \rfloor}{k_1}S(n \bmod p,k \bmod p)
\end{aligned}
因此預處理\(p\)之內的組合數以及組合數的前綴和就能夠遞歸算了。組合數用\(lucas\)算一算就好。