试卷 2023年海淀区中小学生信息学竞赛C++复赛真题
2023年海淀区中小学生信息学竞赛C++复赛真题
编程题
第 1 题    问答题

分披萨 (pizza.cpp)

题目描述:

陶陶的生日,她要把一份圆形披萨分给 n 个好朋友,她想把这份披萨切成  n+1 份使得每个人都能得到一份(她自己也要分得一份) 。这 n+1 份披萨要求大小和形状都要完全一样。那么陶陶最少要切多少刀? 切披萨时,只能切直线,不能把披萨叠放起来切。

输入格式:

第一行仅有一个非负整数 n,表示要把披萨切成 n + 1份

输出格式:

仅有一个整数,表示最少要切披萨的次数

输入输出样例:

样例1输入

3

样例1输出

2

样例2输入

4

样例2输出

5

样例解释和数据范围说明:

样例解释:

样例1和样例2切法如下,按着白线分别切两刀和切五刀。

数据范围:

对于100%的数据: 0 < n < 1018。

第 2 题    问答题

回文时间 (time.cpp)

题目描述:

陶陶习惯用 24小时制来表达时间,例 16:45,表示现在的时间是16 时45分。在信息科技课上,陶陶学到了回文数,如果一个数从左往右看和从右往左看是相同的,那么就称这个数为回文数,陶陶发现有很多时间表示从左往右看和从右往左看也一样的,于是陶陶把这样的时间点定义为回文时间。例如 14:41 就是一个回文时间,已知现在的时间是h时m 分,陶陶请你请求出在此之后(不包含此时刻)的第一个回文时间。特别提醒: 回文时间是指对于一个24 小时制时间表示的合法字符串 ab:cd,一定有a =d,b=c。

输入格式

仅有一行,给出一个表示时间的合法字符串,表达格式为HH:MM,表示一个24小时制时间的字符串

输出格式

按题目要求输出一个回文时间。

输入输出样例:

样例1输入

12:21

样例1输出

13:31

样例2输入

23:59

样例2输出

00:00

第 3 题    问答题

分数线 (score.cpp)

题目描述

一次比赛中,所有参加比赛的选手都获得了一个分  。已知有 C1 个同学得 1 分, C2个同学得 2分,...., cm 个同学得 m 分,请你划定一个分线  k,使得不低于分线 k 的人数 n1和低于分数线 k 的人数n2 均在给定的 个范围[ t,y] 之内,即x=<n1 <=y,x= <n2 <=y。保证s和k一定是整数,且1 =< s < =m,1=<k <= m。

输入格式:

第一行仅有一个正整数 m;第二行包含 m 个整数 C1,C2,...,Cm,两两之间以空格分隔,数据保证至少有一个 ci大于 0 :第三行包含两个用空格分隔的整数 x 和 y。

输出格式:

如果不存在满足条件的分数线,输出 0 。否则,输出一个分符合题目要求的分数线。如果有多个答案,输出符合条件的答案中最小的那一个。

第 4 题    问答题

排座位 (seats.cpp)

题目描述

信息学省队选手由 a名男生和b名女生组成,他们准备乘火车去外地参加比赛。火车由若干接车厢组成,第一节车厢有 n 个连续的座位,每个座位要么空着,要么已经有乘客。为了让男女选手之间增加交流,你需要按以下要求排座位: 相邻的同学不能同时是男生或者是女生。

请从 a+b名学生中选出最多的学生安排在第一节车厢的空座位上以满足题目要求

输入格式:

第一行包括三个整数n,a和b,分别表示第一节车厢座位数量,男生数量和女生数量。

第二行包含长度为n 的字符串,由字符.  和 * 组成,其中 . 代表座位是空的, * 代表有乘客的座位。

输出格式

输出一行一个整数,表示第一节车厢最多可以安排的学生。

第 5 题    问答题

生日 (bir.cpp)

题目描述

陶陶过生日,有n 个小伙伴站成环形为他庆祝,并将他们标号为 1...n,他们对应的身高为 a1...an求如何排序,能让任意相邻的两个小伙伴之间身高差的绝对值最大值最小。

输入格式

第一行仅有一个整数 n ,表示参加生日聚会的小伙伴人数。

第二行有n 个整数 a1,a2,...,an , ai表示第位小伙伴的身高。

输出格式

输出 n 个整数,表示排序后的小伙伴的身高。如果有多种方案,输出一种即可.

第 6 题    问答题

纸牌游戏(game.cpp)

题目描述

有一种纸牌游戏,游戏的规则如下: 初始时玩家分数都是0 ,游戏一共进行 n 个回合,每个回合中玩家要么得分要么扣分。游戏结束时如果只有一名得分最高的玩家,那么他就是获胜者:如果有两名或两名以上的玩家最高分数相同,则其中先获得最高分的玩家为游戏的获胜者。数据保证在比赛结束时至少有一个玩家的分数为正

输入格式

第一行仅有一个整数 n,表示游戏进行的回合数,接下来的 n 行,按照游戏的先后顺序给出每一回合玩家的用户名和得失分数的信息 (负数表示扣分),玩家的用户名均为长度不超过 32 的小写字母组成的字符串,分数的绝对值不大于 1000。

输出格式:

仅有一行,包含一个字符串,表示获胜者的名称.

第 7 题    问答题

赛车游戏 (car.cpp)

题目描述

陶陶和天天喜欢玩赛车游戏,在游戏中有一条直赛道长度为 L ,陶陶的赛车在起点为 0的位置,准备向终点行驶,天天的赛车在终点为 L 的位置,准备向起点行驶。赛车的初始速度都为 1,在赛道上有n个加速带,第 i 加速带的位置为ai ,当小车经过一个加速带时,它的速度就增加 1,请你帮忙计算出两车相遇时间。

输入格式:

第一行仅有一个整数 T表示测试数据的组数,每组测试数据的第一行包含两个整数n  和 L,第二行包含 n 个整数 a1,a2,a3,...,an

输出格式

共有T行,每行仅有一个数,依次对应每组测试数据的答案,表示两车相遇的时间。允许误差不超过10-6 

答题卡
编程题
1 2 3 4 5 6 7
题目总数:7
总分数:700
时间:120分钟