image

编辑人: 浅唱

calendar2025-08-05

message4

visits345

第13届蓝桥杯C++青少组中/高级组选拔赛2022年3月13日真题参考答案

一、实操题

1、字母转换

题目描述:

给定一个大写字母,输出其对应的小写字母。

输入描述:

输入一个大写字母

输出描述:

输出大写字母对应的小写字母。


样例输入:

A

样例输出:

a

参考答案:根据题目描述,输入一个大写字母,输出其对应的小写字母。因此,输入字母"A"时,输出字母"a"。


2、数位求和

题目描述:

给定两个正整数N和M(N<M),统计N到M之间(包含N和M)的正整数中,各个位上的数字之和为8的有多少个。

如:N=100,M=150,100到150之间有5个数,各个位上的数字之和为8。分别是107、116、125、134、143。

输入描述:

输入两个正整数N和M(10O≤N<M≤8O1),且正整数之间以一个空格隔开。

输出描述:

输出一个整数,表示N到M之间(包含N和M)的正整数中有多少个各个位上的数字之和为8。


样例输入:

100 150

样例输出:

5

参考答案:```pythondef digit_sum_8(n, m):count = 0for i in range(n, m+1):if sum(int(digit) for digit in str(i)) == 8:count += 1return countn, m = map(int, input().split())print(digit_sum_8(n, m))```


3、分糖果

题目描述:

有N个小朋友从左到右排成一排,每个小朋友手中都有一定数量的糖果,且糖果总数量是N的倍数。计算出最少调整几次可以使每个小朋友的糖果数量相同。调整规则如下:

规则1:每个小朋友的糖果只能调整到左右相邻的两个小朋友手中;

规则2:第一个小朋友的糖果只能调整到第二个小朋友手中;

规则3:最后一个小朋友的糖果,只能调整到倒数第二个小朋友手中。

例如:N等于3时,1~3号小朋友原有糖果数量分别为6,4,2。

1)1号小朋友拿出两块给2号小朋友;

2)2号小朋友拿出两块给3号小朋友;

两次操作后三个小朋友手中糖果分别为4,4,4。即按照调整规则最少操作2次可以使3个小朋友手中糖果数量都相同。

现按照顺序给出1~N号小朋友手中原有糖果数量,按照调整规则计算出最少调整几次可以使小朋友手中的糖果数量都相同。

输入描述:

第一行输入一个正整数N(N<50),表示有N个小朋友

第二行输入N个正整数(1<正整数<100),表示1到N号小朋友手中原有糖果数量,正整数之间以一个空格隔开,且所有正整数之和是N的倍数

输出描述:

输出一个正整数,表示按照调整规则最少调整几次可以使小朋友手中的糖果数量都相同。


样例输入:

3
642

样例输出:

2

参考答案:```#include #include #include using namespace std;int minOperations(int N, vector& candies) int total = 0;for (int i = 0; i < N; i++) {total += candies[i];}int target = total / N;int operations = 0;for (int i = 0; i < N - 1; i++) {int diff = abs(candies[i] - candies[i + 1]);operations += (diff - 1) / 2;candies[i + 1] += min(diff, candies[i]);candies[i] -= min(diff, candies[i]);}int lastDiff = abs(candies[N - 1] - target);operations += lastDiff / 2;candies[N - 2] += min(lastDiff, candies[N - 1]);candies[N - 1] -= min(lastDiff, candies[N - 1]);return operations;int main() int N;cin >> N;vector candies(N);for (int i = 0; i < N; i++) {cin >> candies[i];}cout << minOperations(N, candies) << endl;return 0;```


4、猴子摘桃子

题目描述:

果园有M行N列套数,每棵书上有一定数量的桃子。猴子从左上角的桃树开始进入果园摘桃子,每到一个桃树下都会将树上的桃子摘完,但猴子每次只能移动到当前所在桃树的下边或右边的桃树下摘桃子,照这个移动方案,猴子在果园中最多可以摘到多少桃子。

现给出M和N的值,以及每棵桃树上的桃子数量,照移动方案,计算出猴子在果园最多可以摘到多少桃子。

例如:M=2 ,N=3 

桃子数量为 

2 3 1

1 4 2

这种情况下,为了摘到最多的桃子,猴子摘桃子的顺序应为2,3,4,2,总桃子数为11。

输入描述:

第一行输入正整数 M和N,分别代表行数和列数 。

之后输入M行N列每课桃树上的桃子数量。

输出描述:

一个正整数,代表猴子按移动规则在果园中最多可以摘到多少桃子。


输入样例:

2 3
2 3 1
1 4 2

输出样例:

11

参考答案:```pythondef max_peaches(M, N, peaches):# 初始化动态规划数组dp = [[0] * (N + 1) for _ in range(M + 1)]# 初始化第一行和第一列for i in range(1, M + 1):dp[i][1] = dp[i - 1][1] + peaches[i - 1][0]for j in range(1, N + 1):dp[1][j] = dp[1][j - 1] + peaches[0][j - 1]# 填充动态规划数组for i in range(2, M + 1):for j in range(2, N + 1):dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + peaches[i - 1][j - 1]# 返回右下角元素return dp[M][N]# 输入M, N = map(int, input().split())peaches = []for _ in range(M):row = list(map(int, input().split()))peaches.append(row)# 输出print(max_peaches(M, N, peaches))```


5、最大值

题目描述:

给定一个正整数M(1≤M≤5)和一个只包含数字的字符串(5<字符串长度≤20)。使用M个乘号插入到字符串中,且两个乘号不能相邻,插入后生成一个乘法算式。找出一种使乘法算式数值最大的插入方式,并将结果输出。  (乘号不能放在字符串的首尾位置)

如M=2,字符串为123456,插入2个乘号。插入方式有:

1*2*3456=6912,1*23*456=10488,1*234*56=13104,1*2345*6=14070,12*3*456=16416,12*34*56=22848,12*345*6=24840,123*4*56=27552,123*45*6=33210,1234*5*6=37020,

其中乘法算式数值最大是第十种,为37020。

输入描述:

第一行输入一个正整数M(1≤M≤5),表示乘号个数。

第二行输入一个只包含数字的字符串(5<字符串长度≤20),表示要插入M个乘号的字符串。

输出描述:

输出一个整数,表示最大乘积数值。


样例输入:

2
123456

样例输出:

37020

参考答案:最大乘积数值为37020。


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

创作类型:
原创

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

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