/ Vijos / 题库 /

组合数问题

组合数问题

时间限制:1秒  内存限制:256M


【问题描述】

  组合数表示的是从 \(n\) 个物品中选出 \(m\) 个物品的方案数。举个例子,从\((1,2,3)\) 三个物品中选择两个物品可以有\((1,2),(1,3),(2,3)\)这三种选择方法。根据组合数的定义,我们可以给出计算组合数的一般公式:

          \(C_{n}^{m}= \frac{n!}{m!(n-m)!}\)

  其中 \(n! = 1 × 2 × … × n\)。
  小葱想知道如果给定 \(n,m\) 和 \(k\),对于所有的 \(0 ≤ i ≤ n,0 ≤ j≤ min(i,m)\) 有多少对 \((i,j)\) 满足\(C_{i}^{j}\)是 \(k\) 的倍数。

【输入格式】

  第一行有两个整数 \(t,k\),其中 \(t\) 代表该测试点总共有多少组测试数据,\(k\) 的意义见【问题描述】。
  接下来 \(t\) 行每行两个整数 \(n,m\),其中 \(n,m\) 的意义见【问题描述】。

【输出格式】

  \(t\) 行,每行一个整数代表答案。

【输入输出样例1】

 Input

1 2
3 3

 Output

1

【输入输出样例1说明】

  在所有可能的情况中,只有 \(C_{2}^{1} = 2\) 是 \(2\) 的倍数。

【输入输出样例2】

 Input

2 5
4 5
6 7

 Output

0
7

【子任务】

说明

【来源】

  Mr.he

信息

ID
1433
难度
10
分类
组合数学 | 递推 点击显示
标签
递交数
1
已通过
0
通过率
0%
上传者