image

编辑人: 浅唱

calendar2025-06-06

message5

visits712

第12届蓝桥杯C++青少组中/高级组选拔赛(STEMA)2021年3月28日真题答案及解析

一、实操题

1、求面积

题目描述:

给定正方形的边长,求正方形的面积(正方形面积=边长*边长)。

输入描述:

输入一个正整数N(2<N<100)作为正方形的边长

输出描述:

输出正方形的面积


样例输入:

3

样例输出:

9

参考答案:正方形的面积为9。

解析:【喵呜刷题小喵解析】:
根据题目描述,我们已知正方形的边长为3。正方形的面积计算公式为边长乘以边长,即面积 = 边长^2。将3代入公式,我们得到面积 = 3^2 = 9。所以,正方形的面积为9。

2、运费

题目描述:

乘坐飞机时,行李超出规定重量后,会对行李进行托运且收取托运费。

以下是某航空公司行李托运的收费标准:

行李重量在20公斤内(含20)按照每公斤10元收取费用,超过20公斤的部分按照每公斤15元收取费用。

请编写程序,在给定行李总重量(单位:公斤)的情况下计算出托运行李的费用。

输入描述:

输入一个正整数N(5<N<200)作为行李的总重量(单位:公斤)

输出描述:

输出托运N公斤行李的费用


样例输入:

10

样例输出:

100

参考答案:br />```pythonN = int(input())if N <= 20:fee = N * 10else:fee = 20 * 10 + (N - 20) * 15print(fee)```

解析:【喵呜刷题小喵解析】
首先,我们需要读取用户输入的行李总重量N。然后,我们检查N是否小于或等于20。如果是,则按照每公斤10元计算费用。否则,前20公斤按照每公斤10元计算,超过20公斤的部分按照每公斤15元计算。最后,我们输出计算得到的费用。

在Python中,我们可以使用if-else语句来根据条件判断执行不同的代码块。在这个问题中,我们使用了if-else语句来判断N是否小于或等于20,并据此计算费用。

具体来说,如果N小于或等于20,则费用为N乘以10。否则,前20公斤的费用为20乘以10,超过20公斤的部分的费用为(N-20)乘以15。将这两部分相加,即可得到总费用。最后,我们使用print函数将费用输出到屏幕上。

3、求素数

提示信息:

素数:素数就是质数,是一个大于1的自然数,且除了1和它本身外,不能被其他自然数整除的数。也就是说,除了1和该数本身以外不再有其他的因数的数被称为素数。最小的素数是2,1不是素数。

题目描述:

给出一个正整数N,计算出7到N之间个位数为7的素数有多少个。例如:7到20之间的素数有7、11、13、17、19,其中个位为7的有2个,分别为7和17

输入描述:

输入一个正整数N(10<N<9999)

输出描述:

输出7到N(包含7和N)之间个位数为7的素数有多少个


样例输入:

20

样例输出:

2

参考答案:首先,需要判断一个数是否为素数。其次,需要在7到N之间寻找个位数为7的数,并判断其是否为素数。最后,统计所有满足条件的素数的个数。

解析:【喵呜刷题小喵解析】:
这是一个求解特定范围内特定条件的素数个数的问题。首先,我们需要理解素数的定义,即一个大于1的自然数,且除了1和它本身外,不能被其他自然数整除的数。题目要求我们在7到N之间寻找个位数为7的素数,并统计其个数。

我们可以按照以下步骤来求解:

1. 遍历7到N之间的所有数,判断其个位数是否为7。
2. 对于个位数为7的数,判断其是否为素数。
3. 如果一个数既是7到N之间的数,其个位数为7,且为素数,那么将其计入计数器。
4. 遍历结束后,输出计数器的值,即为7到N之间个位数为7的素数的个数。

具体的算法实现,需要根据具体的编程语言来编写。例如,可以使用Python语言来实现,利用Python的for循环和if条件语句来遍历和判断,最后输出计数器的值。

4、计算24

题目描述:

“计算24”是一个流传已久的数字游戏,小蓝最近对此痴迷不已。

游戏规则是:从1~10之间的自然数任意拿出4个数(4个数各不相同,顺序随机),进行加、减、乘三种运算(使用某种运算的次数、种类不限),要求运算结果等于24。乘法的优先级高于加、减,并且算式中不可以用括号,不可以改变4个数字出现的顺序。

以下给出两个游戏的具体例子:

若给出的4个数是:10、2、4、8,则有两种解答方案(10+2+4+8=24,10*2-4+8=24),则输出2。

若给出的4个数是:7、2、3、6,则有零种解答方案,则输出0。

输入描述:

输入四个1到10之间的正整数并以一个空格隔开(四个正整数各不相同)

输出描述:

输出有多少种运算方案的结果为24


样例输入:

10 2 4 8

样例输出:

2

参考答案:根据给定的输入,计算出结果为24的运算方案的数量。

解析:【喵呜刷题小喵解析】:
这个问题是一个经典的“计算24”游戏问题。对于这个问题,我们需要从1到10之间的四个不同的自然数中,通过加、减、乘三种运算,使得运算结果等于24。

首先,我们需要读取输入的四个数字,然后尝试使用加、减、乘三种运算来组合这四个数字,以得到结果24。由于乘法的优先级高于加、减,并且算式中不可以用括号,不可以改变4个数字出现的顺序,我们需要考虑所有可能的运算组合,并检查是否可以得到结果24。

对于每个数字组合,我们可以使用递归或迭代的方法来尝试所有可能的运算组合。具体来说,我们可以固定前两个数字,然后考虑它们之间的所有可能的运算(加、减、乘),然后递归地处理剩余的两个数字。如果我们可以得到结果24,则记录该组合为一个有效的解。

最后,我们统计所有有效的解的数量,并将其作为最终答案输出。

需要注意的是,由于这个问题涉及到穷举所有可能的运算组合,因此可能会有很多组合需要考虑。因此,在实际实现时,我们需要使用一些优化技巧来减少计算量,例如剪枝、记忆化等。

另外,由于这个问题的规模较小(只有四个数字),我们也可以通过编写暴力解法来解决。具体来说,我们可以尝试所有可能的数字排列和运算组合,然后检查是否可以得到结果24。这种方法虽然计算量大,但是对于规模较小的问题来说,也是可以接受的。

5、最佳策略

题目描述:

有n个小朋友排成一排,现在需要按身高从低到高的顺序进行排列。排序方式为:如果位置相邻的两个小朋友不符合从低到高的顺序,就交换这两个小朋友的位置。且每个小朋友都有一个不高兴的数值,开始的时候,所有小朋友的不高兴值为0。如果某个小朋友第一次被交换,则他的不高兴值加1,如果第二次被交换,则他的不高兴值加2,如果第三次被交换,则他的不高兴值加3,依此类推。

假如:一个小朋友被交换了3次,他的不高兴值为6(1+2+3)。

如果让所有小朋友都按从低到高的顺序排好队,那么所有小朋友的不高兴值的总和的最小值是多少(也就是交换次数最少,不高兴值得总和最小)。

注意:

1.如果有两个小朋友身高一样,谁在谁前无所谓(不需要交换);

2.每次交换的两个小朋友都需要增加不高兴值。

输入描述:

第一行输入一个正整数n(2<n<51)表示小朋友的数量。

第二行输入n个正整数(每个正整数<160),分别表示n个小朋友的身高,正整数之间以一个空格隔开。

输出描述:

输出所有小朋友的不高兴值的总和的最小值。


样例输入:

3
130 115 98

样例输出:

9

参考答案:首先,我们需要对小朋友的身高进行排序,如果身高相同,则保持原有顺序。然后,我们遍历排序后的身高列表,对于每个小朋友,如果他不是当前位置,则交换他和当前位置的小朋友,并给当前位置的小朋友加上对应的不高兴值。最后,我们累加所有小朋友的不高兴值,即为所有小朋友的不高兴值的总和的最小值。

解析:【喵呜刷题小喵解析】:
这个题目考察的是排序算法和贪心算法的应用。首先,我们需要对小朋友的身高进行排序,如果身高相同,则保持原有顺序。这样可以保证排序后的身高列表是从低到高的顺序,从而减少交换次数。然后,我们遍历排序后的身高列表,对于每个小朋友,如果他不是当前位置,则交换他和当前位置的小朋友,并给当前位置的小朋友加上对应的不高兴值。由于每次交换都会增加两个小朋友的不高兴值,因此我们需要尽可能减少交换次数。最后,我们累加所有小朋友的不高兴值,即为所有小朋友的不高兴值的总和的最小值。

根据题目要求,我们需要注意以下几点:

1. 如果两个小朋友身高相同,则不需要交换,直接保持原有顺序。
2. 每次交换的两个小朋友都需要增加不高兴值,根据交换次数确定不高兴值的大小。
3. 在遍历身高列表时,我们需要判断当前小朋友是否是当前位置,如果不是,则交换位置并增加不高兴值。

通过以上步骤,我们可以得出所有小朋友的不高兴值的总和的最小值。在实际编程中,我们可以使用贪心算法的思想,先对身高进行排序,然后遍历身高列表,进行交换和累加不高兴值。最后输出所有小朋友的不高兴值的总和的最小值即可。

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

创作类型:
原创

本文链接:第12届蓝桥杯C++青少组中/高级组选拔赛(STEMA)2021年3月28日真题答案及解析

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