UOJ Logo Zijian Online Judge

ZOJ

#68. 因子统计(divisor)

统计

题目描述

你有 $q$ 组询问,每组询问你需要计算出组合数 $\binom{n}{m}$ 的因子数量。

$\binom{n}{m}$ 表示 $n$ 个互不相同的球中取 $m$ 个球的方案数,也就是

$$ \binom{n}{m} = \frac{n!}{m!(n-m)!} $$

由于答案可能很大,你只需要输出将答案对 $p = 10^9 + 7$ 取模的结果即可。

输入格式

从标准输入读入数据。

第一行一个正整数 $q$ 表示询问数量。

接下来 $q$ 行,每行 2 个整数 $n, m$,保证 $0\le m \le n$。

输入格式

输出到标准输出。

输出 $q$ 行,每行一个整数对应该询问的答案。

样例

输入

3
0 0
4 2
10 3

输出

1
4
16

解释

$\binom 0 0 = 1$,有 $1$ 个因子。

$\binom 4 2 = 6$,有 $4$ 个因子:$\{1, 2, 3, 6\}$。

$\binom {10} 3 = 120$,有 $16$ 个因子:$\{1,2,3,4,5,6,8,10,12,15,20,24,30,40,60,120\}$。

样例二

下载目录下的 ex_divisor2.inex_divisor2.ans

子任务

对于 $100\%$ 的数据,保证 $q \le 10^{5}, n \le 10^{5}$

测试点$n$$q$特殊性质
$1$$\le 20$$=10^2$
$2$$=10^5$
$3,4$$\le 3,000$$=3,000$
$5$$\le 10^5$A
$6$$=10^5$
$7,8$B
$9,10$

特殊性质 A:保证 $\binom n m \le 10^6$。

特殊性质 B:保证输入的 $n$ 值总是同一个数。

时空限制:2s, 256MB