image

编辑人: 青衫烟雨

calendar2025-08-05

message8

visits974

第12届蓝桥杯C++青少组中/高级组选拔赛2020年9月20日真题参考答案

一、实操题

1、开关

提示信息:

小蓝家的灯是线型开关的,拉一次灯开,再拉一次灯关,未拉之前灯是熄灭状态。

题目描述:

输入一个正整数M(1<M<100),作为小蓝拉灯的次数,判断拉灯M次后,灯是点亮状态还是熄灭状态。

输入描述:

输入一个正整数M作为拉灯的次数(1<M<100)

输出描述:

如果灯是点亮状态输出整数“1”,如果灯是熄灭状态输出整数“0”。


样例输入:

5

样例输出:

1

参考答案:1


2、数字组合

题目描述:

用户输入一个正整数N(3<=N<=9)。从0到N之间的所有正整数(包含0和N)中选择三个,组成一个三位数(0不能作为百位数),且这个三位数为奇数,请计算出共有多少种满足条件的三位数组合。(注意:组成的每个三位数各个位上的数字不能重复;)

输入描述:

输入一个正整数N(3<=N<=9)

输出描述:

输出满足条件的三位数组合的个数


样例输入:

3

样例输出:

8

样例描述:

用户输入的正整数为3,也就是将0,1,2,3四个数字进行组合,符合要求的三位数为: 103,123,203,213,201,231,301,321 共8个,所以输出8。

参考答案:根据题目要求,我们需要从0到N之间的所有正整数中选择三个,组成一个三位数,且这个三位数为奇数,且各个位上的数字不能重复。对于数字N,我们可以选择N以下的数字作为百位、十位和个位,由于百位不能为0,因此百位的选择有N种,十位和个位的选择各有N-1种。由于要求数字不能重复,因此我们需要排除掉一些不符合条件的情况。具体算法如下:1. 遍历百位数字,从1到N;2. 对于每个百位数字,遍历十位数字,从0到N-1,排除掉已经选过的百位数字;3. 对于每个十位数字,遍历个位数字,从0到N-1,排除掉已经选过的百位和十位数字;4. 计算满足条件的组合数,即C(N,1) * C(N-1,1) * C(N-2,1)。但是,由于题目要求数字不能重复,我们需要排除掉一些不符合条件的情况。例如,当百位数字为3时,我们不能选择3作为十位或个位数字。因此,我们需要根据百位数字来调整十位和个位数字的选择。具体的排除条件如下:1. 当百位数字为N时,只有两位数字可选,即C(N-1,1) * C(N-2,1);2. 当百位数字为N-1时,有1位数字不能与百位数字重复,即C(N-2,1) * C(N-2,1);3. 当百位数字为N-2时,有2位数字不能与百位和十位数字重复,即C(N-2,1) * C(N-3,1);4. 当百位数字小于N-2时,有3位数字都不能与百位、十位和个位数字重复,即C(N-3,1) * C(N-3,1)。因此,最终的计算公式为:组合数 = C(N,1) * [C(N-1,1) * C(N-2,1) - C(N-2,1)] + C(N,1) * C(N-2,1) * [C(N-2,1) - C(N-3,1)] + C(N,1) * C(N-2,1) * C(N-3,1) * (N-2)


3、报数

题目描述:

有n个人围成一个圈,从1到n按顺序排好号。然后从第一个人开始顺时针报数(从1到3报数),报到3的人退出圈子后,后面的人继续从1到3报数,直到留下最后一个人游戏结束,问最后留下的是原来第几号。

输入描述:

输入一个正整数n(4<n<600)

输出描述:

输出最后留下的是原来的第几号


样例输入:

5

样例输出:

4

参考答案:首先,我们根据题目描述,模拟报数的过程。1. 当n=5时,初始的5个人按照顺时针方向分别是1、2、3、4、5。2. 从第一个人开始报数,即1开始报1,2报2,3报3,此时3退出圈子,剩下1、2、4、5。3. 剩下的4个人继续报数,1报1,2报2,4报3,此时4退出圈子,剩下1、2、5。4. 剩下的3个人继续报数,1报1,2报2,5报3,此时5退出圈子,剩下1、2。5. 剩下的2个人继续报数,1报1,2报2,此时1退出圈子,剩下2。因此,最后留下的是原来的第2号。


4、找单词

题目描述:

给定一个单词及一段文章,请你输出这个单词在文章中一共出现的次数,和单词第一次出现时首字母位于文章中的位置(文章中第一个字符位置为0,第二个字符位置为1.....,字符包含空格)。

注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须是文章中独立的单词,不能是某个单词中的一部分。例如:to 和 tomato 不能匹配。

输入:

第1行为一个字符串,其中只含字母,表示给定单词(1≤ 字符串长度≤10)

第2行为一个字符串,其中只包含字母和空格,表示给定的文章(1≤ 文章长度≤100000)

输出:

如果在文章中找到给定单词则输出两个整数,分别是单词在文章中出现的次数和第一次出现的位置,两个整数之间用一个空格隔开。如果单词在文章中没有出现,则直接输出一个整数-1。


样例输入:

To
to be or not to be is a question

样例输出:

2 0

参考答案:2 0


5、门牌号

提示信息:

一家酒店有F(0<F<100)层高,每层都有n(0<n<100)个房间,房间门牌号由不少于3位的数字组成:后两位是房间号,从1开始,不间断地排到n,不足两位的前面补零;前面是楼层号,从1开始,不间断地排到F,前面不补零。如1楼第8个房间门牌号是108,12楼第16个房间门牌号是1216。

现在要为每个房间制作一个门牌号码的金属牌,每个金属牌都要定制模具,数字居中显示。但如果某房间门牌颠倒过来的号码与原号码一模一样,就需要做一个特殊记号,以免混淆方向。

例如:8008 1691 6119 818 619

注:数字6倒过来是9;9倒过来是6;0、1、8倒过来还是原数;其他数字倒过来不构成数字。对于多位数618,倒过来看应该是819。

题目描述:

输入F和n,计算有多少房间的门牌号码需要做特殊记号。

输入:

输入两个正整数F(0<F<100)和n(0<n<100)中间一个空格隔开,代表酒店的楼层数和每层房间数。

输出:

输出需要做特殊记号的门牌数。


样例输入:

2 5

样例输出:

1

参考答案:1


喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:第12届蓝桥杯C++青少组中/高级组选拔赛2020年9月20日真题参考答案

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share