#zHSXybttg060611. 1658:超能粒子炮 · 改

1658:超能粒子炮 · 改

好的,我将这道题整理为清晰的题面格式,并补充样例解释、数据范围与时空限制:


题目描述

曾经发明了脑洞治疗仪与超能粒子炮的发明家 SHTSC 又公开了他的新发明:超能粒子炮・改——一种可以发射威力更加强大的粒子流的神秘装置。

超能粒子炮・改相比超能粒子炮,在威力上有了本质的提升。它有两个参数 n,kn, k,它会向每个编号为 00kk(包含两端)的位置 ii 发射威力为 Cnimod2333C_n^i \bmod 2333 的粒子流。

现在 SHTSC 给出了他的超能粒子炮・改的参数,让你求出其发射的粒子流的威力之和除以 23332333 所得的余数。

即求:

i=0kCnimod2333\sum_{i=0}^k C_n^i \bmod 2333

输入格式

第一行一个整数 tt 表示数据组数。

之后 tt 行,每行两个整数 n,kn, k,含义如题面描述。


输出格式

tt 行,每行一个整数,表示粒子流的威力之和模 23332333 的值。


样例

样例输入

3
5 5
10 7
1145 14

样例输出

32
968
763

样例解释

第一组:n=5,k=5n=5, k=5
C50+C51+C52+C53+C54+C55C_5^0 + C_5^1 + C_5^2 + C_5^3 + C_5^4 + C_5^5
=1+5+10+10+5+1=32= 1 + 5 + 10 + 10 + 5 + 1 = 32
32mod2333=3232 \bmod 2333 = 32

第二组:n=10,k=7n=10, k=7,计算 C100C_{10}^0C107C_{10}^7 之和模 23332333968968

第三组:n=1145,k=14n=1145, k=14,计算结果为 763763


数据范围

  • 对于 10%10\% 的数据,t=1t=1n,k1000n,k \le 1000
  • 对于 30%30\% 的数据,t=1t=1n,k106n,k \le 10^6
  • 对于 50%50\% 的数据,t=1t=1n1018,k1000n \le 10^{18}, k \le 1000
  • 对于 70%70\% 的数据,t=100t=100n,k1018n,k \le 10^{18}
  • 对于 100%100\% 的数据,t=106t=10^6n,k1018n,k \le 10^{18}

时空限制

  • 时间:1000 ms1000 \text{ ms}
  • 内存:524288 KB524288 \text{ KB}

提示
模数 23332333 是质数。
S(n,k)=i=0kCnimod2333S(n,k) = \sum_{i=0}^k C_n^i \bmod 2333

利用 Lucas 定理将 n,kn,k23332333 进制分解: 设 n=n1×2333+n0n = n_1 \times 2333 + n_0k=k1×2333+k0k = k_1 \times 2333 + k_0,其中 0n0,k0<23330 \le n_0, k_0 < 2333

有递推式(需推导):

$$S(n,k) = S(n_1, k_1-1) \times S(n_0, 2332) + C_{n_1}^{k_1} \times S(n_0, k_0) \pmod{2333}$$

其中 $S(n_0, 2332) = \sum_{i=0}^{2332} C_{n_0}^i = 2^{n_0} \bmod 2333$(因为 n0<2333n_0 < 2333,组合数求和等于 2n02^{n_0})。

预处理 0a,b<23330 \le a,b < 2333 的所有 Cabmod2333C_a^b \bmod 2333S(a,b)S(a,b),即可 O(log2333n)O(\log_{2333} n) 递归计算。
tt 很大,需要预处理好所有 S(a,b)S(a,b)O(23332)O(2333^2) 可接受。