答案 第
13 届蓝桥杯 C++青少组中 /高级组选拔赛 2022年3月 13 日真题
题目总数: 5
总分数:128
编程题
第 1 题
问答题
字母转换
题目描述:
给定一个大写字母,输出其对应的小写字母。
输入描述:
输入一个大写字母
输出描述:
输出大写字母对应的小写字母。
样例输入:
样例输出:
A
a
# include <iostream>
using namespace std;
int main (void ) {
char n;
cin >> n;
if (n >= 65 && n <= 90) {
n += 32;
} else {
n -= 32;
}
cout << n;
}
1
2
3
4
5
6
7
8
9
10
11
12
// 答 案 2
#include <iostream>
1
2
解析
答案 评分标准:
6
分:能正确输出一组数据;
6 分:能正确输出两组数据;
6 分:能正确输出三组数据。
第 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。
样例输入:
样例输出:
using namespace std;
int main () {
char a;
cin >> a;
cout << char(a + 32);
return 0;
}
3
4
5
6
7
8
9
100 150
5
# include <iostream>
using namespace std;
int main () {
int n, m;
int ans = 0;
cin >> n >> m;
for (int i = n; i <= m; i++) {
int sum = 0;
int k = i;
while (k) {
sum += k % 10;
k /= 10;
1
2
3
4
5
6
7
8
9
10
11
12
13
解析
评分标准:
6 分:能正确输出一组数据;
6 分:能正确输出两组数据;
8 分:能正确输出三组数据。
第 3 题
问答题
分糖果
题目描述:
有 N个小朋友从左到右排成一排,每个小朋友手中都有一定数量的糖果,且糖果总数量是 N的倍数。计算出最
少调整几次可以使每个小朋友的糖果数量相同。调整规则如下:
规则 1:每个小朋友的糖果只能调整到左右相邻的两个小朋友手中;
规则 2:第一个小朋友的糖果只能调整到第二个小朋友手中;
规则 3:最后一个小朋友的糖果,只能调整到倒数第二个小朋友手中。
例如: N等于 3时, 1~3号小朋友原有糖果数量分别为 6,4,2。
1)1 号小朋友拿出两块给 2号小朋友;
2)2 号小朋友拿出两块给 3号小朋友;
}
if (sum == 8) {
ans++;
}
}
cout << ans << endl;
return 0;
}
14
15
16
17
18
19
20
21
// 答 案 2
#include <iostream>
using namespace std;
int main () {
int a, b;
cin >> a >> b;
int cnt = 0;
for (int i = a; i <= b; i++)
if ((i % 10 + i / 10 % 10 + i / 100) ==
8) // 算 式 分 别 为 i的 个 位 , 十 位 , 百 位 数 字
cnt++;
cout << cnt;
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
答案
两次操作后三个小朋友手中糖果分别为
4,4,4。即按照调整规则最少操作 2次可以使 3个小朋友手中糖果数量都相
同。
现按照顺序给出 1~N号小朋友手中原有糖果数量,按照调整规则计算出最少调整几次可以使小朋友手中的糖果
数量都相同。
输入描述:
第一行输入一个正整数 N(N<50),表示有N个小朋友
第二行输入 N个正整数 (1<正整数 <100),表示1到 N号小朋友手中原有糖果数量,正整数之间以一个空格隔开,且
所有正整数之和是 N的倍数
输出描述:
输出一个正整数,表示按照调整规则最少调整几次可以使小朋友手中的糖果数量都相同。
样例输入:
样例输出:
3
642
2
# include <iostream>
using namespace std;
int main () {
int n;
cin >> n;
int a[n], sum = 0;
for (int i = 1; i <= n; i++) {
cin >> a[i];
sum += a[i];
}
int num = 0;
for (int i = 1; i <= n - 1; i++) {
if (a[i] != sum / n) {
a[i + 1] = (a[i + 1] + a[i] - (sum / n));
a[i] = sum / n;
num++;
}
}
cout << num;
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 答 案 2
#include <iostream>
using namespace std;
1
2
3
解析
评分标准:
6分:能正确输出一组数据;
6 分:能正确输出两组数据;
6 分:能正确输出三组数据;
7 分:能正确输出四组数据。
int n, s[ 100009 ]; // s 用 来 存 储 每 个 小 朋 友 手 上 的
第13届蓝桥杯C++青少组中_高级组选拔赛2022年3月13日真题-附答案,2022年3月蓝桥杯青少组STEMA等考C++中高级组真题答案