#6671. 选出 k 个数

选出 k 个数

题面:选出 k 个数

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

给定两个整数 nk

现在有 n 个互不相同的数,编号分别为 1, 2, ..., n。你需要从中选出恰好 k 个数。

请你计算一共有多少种不同的选择方案。

如果两个方案中存在至少一个编号,在其中一个方案中被选中,而在另一个方案中没有被选中,则认为这两个方案不同。

输入格式

输入一行,包含两个整数 n, k

输出格式

输出一个整数,表示从 n 个数中选出恰好 k 个数的方案数。

数据范围

1 <= n <= 30
0 <= k <= n

保证答案在 32 位有符号整数范围内。

样例

输入

5 4

输出

5

说明

1, 2, 3, 4, 5 中选出 4 个数,共有以下 5 种方案:

{1, 2, 3, 4}
{1, 2, 3, 5}
{1, 2, 4, 5}
{1, 3, 4, 5}
{2, 3, 4, 5}

所以答案为 5

测试点说明表

测试点编号 n ≤ k 特殊性质 设计目的
1 1 0 选择 0 个 覆盖 k = 0,只有空方案
2 1 最小非空选择 覆盖 n = k = 1
3 5 4 样例数据 对应原程序固定参数,答案为 C(5,4)
4 全部选择 覆盖 k = n 边界
5 6 2 小规模普通数据 检查基础组合计数
6 8 3 中小规模普通数据 覆盖多分支 DFS 统计
7 10 5 k 接近 n/2 覆盖组合数较大的情况
8 20 1 只选一个 覆盖答案等于 n 的特殊情况
9 10 正常大规模 覆盖较大组合数
10 30 15 极限数据,k 接近 n/2 覆盖最大规模和大答案