[GESP202409 八级] 手套配对

GESP编程共123题,本题是整站第1440题,已经有人完成了本题,加油!

题目描述

小杨有 n 对不同的手套,每对手套由左右各一只组成。

小杨想知道从中取出 m 只手套,恰好包含 k 对手套的情况有多少种。

小杨认为两种取出的情况不同,当且仅当两种情况取出的手套中存在不同的手套(同一对手套的左右手也视为不同的手套)。

输入格式

本题单个测试点内由多组测试数据。第一行是一个整数 t,表示测试用例数量。接下来是 t 组测试用例,每组一行。

每组数据只有一行三个正整数 n,m,k,表示手套数量、取出的手套数和目标对数。

输出格式

对每组数据,输出一行一个整数表示答案对 10^9+7 取模的结果。

输入输出样例

输入 #1

2
5 6 2
5 1 5

输出 #1

120
0

说明/提示

子任务 占比 t n m k
1 30% ≤5 1000 ≤3 =1
2 30% ≤5 ≤5 ≤10 ≤5
3 40% 10^5 1000 2000 2000

对全部的测试数据,保证 1≤t≤10^5,1≤n≤1000,1≤m≤2×n,1≤k≤n。

别灰心,再试一次!

真题解析

【题目大意】从n对手套中(左右手不同)选择m只,恰好有k只的方案数。

【考纲知识点】数论:排列组合

【解题思路】考虑从n对手套中选出k对手套,有种选择,此时已经用掉了2k的次数,还剩下m-2k次,这些次数考虑从剩余的n-k双手套中,每个手套选一只,每种手套有2种选择,因此有种情况。

因此答案ans=

由于数据量只有10三次方,因此可以杨辉三角,2的次幂取模可以直接递推求解,如果数据范围达到百万级别,则需要用逆元求解。

参考代码:

杨辉三角:

 

n,m,k百万级别数据范围的

参考代码(逆元):

本站题目仅供学习,GESP版权归CCF所有,如有侵权请联系删除。站长陈老师QQ及微信:208234。