2023年12月GESP真题及题解(C++八级): 奖品分配

2023年12月GESP真题及题解(C++八级): 奖品分配

题目描述

班上有N NN名同学,学号从0 00N − 1 N-1N1。有M MM种奖品要分给这些同学,其中,第i ii种奖品总共有a i a_iai个 (i = 0 , 1 , ⋯ , M − 1 i=0,1, \cdots ,M-1i=0,1,,M1)。

巧合的是,奖品的数量不多不少,每位同学都可以恰好分到一个奖品,且最后剩余的奖品不超过1 11个(即:N ≤ a 0 + a 1 + ⋯ + a M − 1 ≤ N + 1 N\le a_0+a_1+ \cdots +a_{M-1}\le N+1Na0+a1++aM1N+1)。

现在,请你求出每个班级礼物分配的方案数,所谓方案,指的是为每位同学都分配一个种类的奖品。

只要有一位同学获得了不同种类的奖品,即视为不同的方案。方便起见,你只需要输出方案数对10 9 + 7 10^{9}+7109+7取模后的结果即可。

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

输入格式

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

接下来T TT行,每行若干用单个空格隔开的正整数。首先是两个正整数N , M N,MN,M,接着是M MM个正整数a 0 , a 1 . . . a M − 1 a_0,a_1...a_{M-1}a0,a1...aM1。保证 $N \le a_0+a_1+\cdots+a_{M-1} \le N+1 $。

输出格式

输出T TT行,每行一个整数,表示该班级分配奖品的方案数对10 9 + 7 10^{9}+7109+7取模的结果。

输入输出样例 1
输入 1
3 3 2 1 2 3 2 1 3 5 3 1 3 1
输出 1
3 4 20
输入输出样例 2
输入 2
5 100 1 100 100 1 101 20 2 12 8 123 4 80 20 21 3 999 5 101 234 499 66 99
输出 2
1 1 125970 895031741 307187590
说明/提示

样例解释 1

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

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

对于第3 33个班级,可以把编号为0 00的奖品分配给5 55名同学中的任意一名,共有5 55种方案;再把编号为2 22的奖品分配给剩余4 44名同学中的任意一名,共有4 44种方案;最后给剩余3 33名同学自然获得1 11号奖品。因此,方案数为5 × 4 = 20 5 \times 4 = 205×4=20

数据范围

对于30 % 30\%30%的测试点,保证N ≤ 10 N \le 10N10

对于另外30 % 30\%30%的测试点,保证M = 2 M=2M=2

对于所有测试点,保证N ≤ 1000 N \le 1000N1000;保证T ≤ 1000 T \le 1000T1000;保证M ≤ 1001 M \le 1001M1001

思路分析

这道题的关键在于发现总奖品数S与人数N的关系,从而简化计算。当S=N时,必须全部分配,方案数为N!除以各奖品数量的阶乘;当S=N+1时,有一种奖品少分一个,方案数为(N+1)!除以各奖品数量的阶乘。由于模数为质数,可以用预处理阶乘和阶乘逆元来快速计算。

代码实现

#include<bits/stdc++.h>// 万能头usingnamespacestd;typedeflonglongll;constintMOD=1e9+7;// 模数constintMAXF=1001;// 最大阶乘数,因为N最大1000,N+1最大1001ll fac[MAXF+5];// 阶乘数组ll invfac[MAXF+5];// 阶乘逆元数组// 快速幂取模llpow_mod(ll a,ll b){ll res=1;while(b){if(b&1)res=res*a%MOD;a=a*a%MOD;b>>=1;}returnres;}// 预处理阶乘和阶乘逆元voidinit(){fac[0]=1;for(inti=1;i<=MAXF;i++){fac[i]=fac[i-1]*i%MOD;}// 费马小定理求最大阶乘的逆元invfac[MAXF]=pow_mod(fac[MAXF],MOD-2);// 递推求其他阶乘逆元for(inti=MAXF;i>=1;i--){invfac[i-1]=invfac[i]*i%MOD;}}intmain(){init();// 预处理intT;cin>>T;while(T--){intN,M;cin>>N>>M;ll d=1;// 保存分母的逆元乘积,即所有invfac[a_i]的积intS=0;for(inti=0;i<M;i++){inta;cin>>a;S+=a;d=d*invfac[a]%MOD;// 乘以当前a_i阶乘的逆元}ll ans;if(S==N){ans=fac[N]*d%MOD;// S=N时,分子为N!}else{// S == N+1ans=fac[N+1]*d%MOD;// S=N+1时,分子为(N+1)!}cout<<ans<<endl;}return0;}

功能分析

  1. 预处理阶乘和逆元:预先计算0到1001的阶乘及其逆元,便于后续O(1)查询。

  2. 快速幂取模:用于计算阶乘的逆元(费马小定理)。

  3. 主逻辑:对于每个测试用例:

    • 读入N、M和每种奖品的数量a_i。
    • 计算总奖品数S。
    • 计算分母的逆元乘积(所有invfac[a_i]的乘积)。
    • 根据S与N的关系选择分子(N!或(N+1)!),与分母逆元相乘取模得到答案。
  4. 复杂度

  • 时间复杂度:预处理O(MAXF log MOD),每个测试用例O(M),整体O(T*M),在数据范围内完全可以接受。
  • 空间复杂度:O(MAXF),用于存储阶乘和逆元表。

完整GESP C++考级真题题解专栏:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html

更多csp信奥赛C++学习资料汇总:

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转


2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

3、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html

4、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1209363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年12月GESP真题及题解(C++八级): 大量的工作沟通

2023年12月GESP真题及题解(C八级): 大量的工作沟通 题目描述 某公司有 NNN 名员工&#xff0c;编号从 000 至 N−1N-1N−1。其中&#xff0c;除了 000 号员工是老板&#xff0c;其余每名员工都有一个直接领导。我们假设编号为 iii 的员工的直接领导是 fif_ifi​。 该公司有严…

“See_you“:“Next Moment“

关注【飞桨PaddlePaddle】公众号 获取更多技术内容~

C#.net 分布式ID之雪花ID,时钟回拨是什么?怎么解决?

前言&#xff1a;雪花ID是一种分布式ID生成算法&#xff0c;具有趋势递增、高性能、灵活分配bit位等优点&#xff0c;但强依赖机器时钟&#xff0c;时钟回拨会导致ID重复或服务不可用。时钟回拨指系统时间倒走&#xff0c;可能由人为修改、NTP同步或硬件时钟漂移引起。基础解决…

金属3D打印“局部微观结构精准编程”—多体积激光能量密度控制技术

金属3D打印控形控性技术研究似乎是一个永恒的、又好像是一个比较老的话题&#xff0c;它的理解差异在于怎样理解控形控性。在同一部件的不同部位或表面上局部改变微观结构、相组成和金属间化合物&#xff0c;实现局部所需的热和机械性能&#xff0c;是可能的理解方向之一。 这种…

2026年和平评价好的隐形车衣门店价格,隐形车衣/贴隐形车衣/太阳膜/车衣改色/贴太阳膜/汽车贴膜,隐形车衣品牌哪个好

随着汽车消费升级与车主对车辆保护需求的精细化,隐形车衣市场近年来持续扩容。数据显示,2025年国内隐形车衣市场规模已突破200亿元,年复合增长率超15%。然而,行业快速扩张的背后,施工标准不统一、产品良莠不齐等问…

淘股吧24小时个股搜索热度分析报告 - 2026-01-24 10:41:03

最近七日搜索量最小的股票 ================================================== 股票名称: 志特新材 最近七日搜索量: 327 ==================================================

MICRONE微盟 ME3113AM6G SOT23-6 DC-DC电源芯片

特性输入电压范围&#xff1a;4.5V ~ 18V关断电流&#xff1a;8uA静态电流&#xff1a;120uA导通电阻&#xff1a;低侧50mΩ&#xff0c;高侧90mΩ开关频率&#xff1a;500kHz参考电压值&#xff1a;0.6V 2%逐周期限流保护&#xff1a;峰值限流5.5A&#xff0c;谷值限流3.3A输出…

总结地道螺蛳粉店排名,为你推荐高性价比的螺蛳粉公司

随着螺蛳粉消费市场的持续扩容,越来越多创业者开始关注这一赛道,围绕地道螺蛳粉店排名高性价比的螺蛳粉公司正宗螺蛳粉加盟品牌的提问也愈发集中。本文结合创业者的高频疑惑,以湖南桐芯餐饮管理有限公司旗下的倾城螺…

分析舞钢冷库货架批发直销厂家,中恒智能性价比哪家好?

问题1:什么是冷库货架源头厂家?和普通货架厂家有什么区别? 冷库货架源头厂家是指具备自主研发、生产、销售冷库专用货架及配套系统能力,且能直接对接终端客户的企业,核心优势在于从设计到交付的全流程可控性,避免…

MICRONE微盟 ME1502AM5G SOT23-5 功率电子开关

特性70mΩ导通电阻限流门限通过外置电阻可调全工作范围内限流门限偏差&#xff1a;15%输出短路时能快速反应保护&#xff0c;抑制尖峰电流无衬底二极管&#xff0c;芯片关断时可防止反向电流

导师严选8个论文写作工具,一键生成论文工具助MBA高效完成学术论文!

导师严选8个论文写作工具&#xff0c;一键生成论文工具助MBA高效完成学术论文&#xff01; AI 工具如何成为论文写作的得力助手 在当前学术研究日益数字化的背景下&#xff0c;AI 工具正逐步渗透到论文写作的各个环节。对于 MBA 学生而言&#xff0c;撰写高质量的学术论文不仅是…

async/await 到底要不要加 try catch?我来给你整明白!

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣前言 现在写异步代码,基本上就是 Promise 和 async/await 两种写法。虽然这俩都能干同样的活,但 async/await 写起来更像同步代码,读起来更顺眼,所以很多人都…

淘股吧24小时个股搜索热度分析报告 - 2026-01-24 10:38:24

淘股吧24小时个股搜索热度分析 分析时间: 2026-01-24 10:38:24 ==================================================元素位置信息: ================================================== 行3: 股票名称 - 中国长城, …

CHIPSTAR智浦欣 CS8122S CS8138S SOP-8 线性稳压器

特性 5伏士2%稳压输出 低压差电压(0.6V0.5A) 750毫安输出电流能力 外部编程复位延迟 故障保护反向电池保护60伏负载放电-50伏反向瞬态 短路保护热关断

如何用YOLOv9搭建实时检测系统?答案在这里

如何用YOLOv9搭建实时检测系统&#xff1f;答案在这里 YOLO系列模型自问世以来&#xff0c;就以“快、准、稳”成为工业界目标检测的首选。当YOLOv8还在广泛部署时&#xff0c;YOLOv9已悄然登场——它不是简单迭代&#xff0c;而是引入了可编程梯度信息&#xff08;PGI&#xf…

Llama3-8B指令微调教程:Alpaca格式一键启动,快速定制任务

Llama3-8B指令微调教程&#xff1a;Alpaca格式一键启动&#xff0c;快速定制任务 1. 为什么选Llama3-8B做指令微调&#xff1f; 你是不是也遇到过这些情况&#xff1a;想让大模型听懂你的业务指令&#xff0c;但发现开源模型默认只“会聊天”&#xff0c;不会执行你写的流程&…

从零开始部署BERT语义系统:WebUI集成与API调用完整指南

从零开始部署BERT语义系统&#xff1a;WebUI集成与API调用完整指南 1. 这不是普通填空&#xff0c;是真正懂中文的语义推理 你有没有试过在写文案时卡在一个词上&#xff1f;比如“这个方案很有____性”&#xff0c;后面该接“创新”还是“前瞻”&#xff1f;又或者读到一句古…

Qwen-1.5B原版 vs 蒸馏版:DeepSeek-R1在数学任务上的精度对比

Qwen-1.5B原版 vs 蒸馏版&#xff1a;DeepSeek-R1在数学任务上的精度对比 你有没有试过让一个15亿参数的模型解一道高中数学压轴题&#xff1f;不是简单套公式&#xff0c;而是像人一样一步步推导、验证、回溯——甚至自己发现中间步骤的逻辑漏洞&#xff1f;最近我们实测了一…

YOLOv9训练监控怎么做?TensorBoard集成部署案例

YOLOv9训练监控怎么做&#xff1f;TensorBoard集成部署案例 训练深度学习模型就像开车——光有油门和方向盘不够&#xff0c;你还得盯着仪表盘。YOLOv9作为当前目标检测领域备受关注的新一代模型&#xff0c;其训练过程复杂、参数多、迭代长&#xff0c;没有实时可视化监控&am…

Docker 容器中修改 root 密码的正确方法

在使用 Docker 容器时&#xff0c;有时我们需要在容器创建后动态修改其中用户的密码&#xff0c;尤其是 root 用户的密码。很多人尝试使用 docker exec 命令直接执行 chpasswd&#xff0c;但常常因为命令格式或 shell 解析问题导致密码未成功更新。本文将详细介绍如何正确使用 …