题库 C++/C语言题库 题目列表 试题名称:奖品分配班上有 N 名同学,学号从 0 &...
问答题

试题名称:奖品分配

班上有 N  名同学,学号从 0   到    N-1  。有  M 种奖品要分给这些同学,其中,第 i 种奖品总共有 ai  个(i=0,1,.....M-1 )。巧合的是,奖品的数量不多不少,每位同学都可以恰好分到⼀个奖品,且最后剩余的奖品不超过1  个(即:   )。

 

现在,请你求出每个班级礼物分配的⽅案数,所谓⽅案,指的是为每位同学都分配⼀个种类的奖品。只要有⼀位同 学获得了不同种类的奖品,即视为不同的⽅案。⽅便起见,你只需要输出⽅案数对  109+7  取模后的结果即可。

 

共有  T    个班级都⾯临着奖品分配的问题,你需要依次为他们解答。


输入描述


第一行一个整数 T,表示班级数量。

接下来 T 行,每行若干用单个空格隔开的正整数。首先是两个正整数 N,M ,接着是 M个正整数 。 保证 。

输出描述

输出 T 行,每行一个整数,表示该班级分配奖品的方案数对 109+7 取模的结果。

样例输入 1

1      3
2      3 2 1 2 
3      3 2 1 3 
4      5 3 3 1

样例输出 1

1      3 
2      4 
3      20

样例解释1

对于第1 个班级,学号为 0,1,2  的同学可以依次分别获得奖品  0,1,1   ,也可以依次分别获得奖品    1,0,1    ,也可以依次 分别获得奖品  1,1,0          ,因此共有  3   种⽅案。

 

对于第2 个班级,学号为   0,1,2     的同学可以依次分别获得奖品   0,1,1   ,也可以依次分别获得奖品    1,0,1    ,也可以依次 分别获得奖品      1,1,1  ,也可以依次分别获得奖品     1,1,1     ,因此共有  4   种⽅案。

 

对于第3 个班级,可以把编号为  1   的奖品分配给  5   名同学中的任意⼀名,共有  5   种⽅案;再把编号为  2   的奖品分配 给剩余   4  名同学中的任意⼀名,共有 4    种⽅案;最后给剩余   3  名同学⾃然获得  0   号奖品。因此,⽅案数为5*4=20。

样例输入 2

样例输出 2

数据规模

题目信息
C++语言等级考试真题 2023年 八级 编程题
-
正确率
0
评论
167
点击