#6671. 选出 k 个数
选出 k 个数
题面:选出 k 个数
时间限制: 1 秒 内存限制: 256 MB
给定两个整数 n 和 k。
现在有 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 |
覆盖最大规模和大答案 |