最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

信息学奥赛题库- 【16NOIP提高组】组合数问题

C++ 少儿编程 1586浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

【题目描述】

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

$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$行,每行一个整数代表所有的$0≤i≤n,0≤j≤min(i,m)$中有多少对($i, j$)满足$C(j,i)$是$k$的倍数。

【输入样例】

1 2
3 3

【输出样例】

1

【提示】

【提示】

在所有可能的情况中,只有$C(1,2)$是$2$的倍数。

【样例2输入】

2 5
4 5
6 7

【样例2输出】

0
7

您必须 登录 才能发表评论!