#zHSXybttg060609. 1656:Combination

1656:Combination

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


题目描述

原题来自:BZOJ 2982

LMZ 有 nn 个不同的基友,他每天晚上要选 mm 个进行 [河蟹],而且要求每天晚上的选择都不一样。那么 LMZ 能够持续多少个这样的夜晚呢?当然,LMZ 的一年有 1000710007 天,所以他想知道答案 mod10007\bmod 10007 的值。

实际上就是求组合数 Cnmmod10007C_n^m \bmod 10007


输入格式

第一行一个整数 tt,表示有 tt 组数据;

接下来 tt 行,每行两个整数 n,mn, m,含义如上。


输出格式

tt 行,每行一个整数,表示 Cnmmod10007C_n^m \bmod 10007 的值。


样例

样例输入

4
5 1
5 2
7 3
4 2

样例输出

5
10
35
6

样例解释

  • C51=5mod10007=5C_5^1 = 5 \bmod 10007 = 5
  • C52=10mod10007=10C_5^2 = 10 \bmod 10007 = 10
  • C73=35mod10007=35C_7^3 = 35 \bmod 10007 = 35
  • C42=6mod10007=6C_4^2 = 6 \bmod 10007 = 6

数据范围

对于全部数据:

  • 1t2001 \le t \le 200
  • 1mn2×1081 \le m \le n \le 2\times 10^8

时空限制

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

提示
模数 1000710007 是质数,可以使用 Lucas 定理 计算组合数模小质数,避免对大数直接计算。
Lucas 定理:

$$C_n^m \bmod p = C_{n \bmod p}^{m \bmod p} \times C_{\lfloor n/p \rfloor}^{\lfloor m/p \rfloor} \bmod p$$

其中 p=10007p=10007,递归求解即可。预处理 11p1p-1 的阶乘与逆元,可 O(1)O(1) 计算 CabmodpC_a^b \bmod p(当 a,b<pa,b<p)。