答案 第
13 届蓝桥杯 C++青少组中 /高级组选拔赛 2022年1月 22 日真题
题目总数: 5
总分数:128
编程题
第 1 题
问答题
比大小
题目描述:
给出两个不同的整数,输出两个整数中较大的那个。
输入描述:
输入两个不同的整数 (-1000<整数<1000), 两个整数之间以一个空格隔开。
输出描述:
将两个整数中较大的那个输出。
样例输入:
样例输出:
第 2 题
问答题
1 3
3
#include <iostream>
using namespace std;
int a, b;
int main () {
cin >> a >> b;
if (a > b) {
cout << a << endl;
} else {
cout << b << endl;
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
答案
字符串逆序
题目描述:
给出一个字符串,然后将字符串逆序输出。
输入描述:
输入一个只包含数字及字母的字符串 (2<字符串长度 <100)。
输出描述:
将字符串逆序输出
样例输入:
样例输出:
第 3 题
问答题
近似值
题目描述:
给出一个包含十个正整数的数组和一个正整数 (目标值 ),从数组中找出两个数,使这两个数相加后的和,小于等
于目标值并且离目标值最接近。
然后将两个数的和输出。
如:正整数数组为【 9,4,3,8,8,9,11,9,8,5】,目标值为 10,其中数组中 4和 3、 4和 5、 3和 5的和都小于目标值 10,但
和离目标值最接近的两个数是 4和 5,其和为 9。
输入描述:
第一行输入 10个正整数 (正整数 <10000), 表示正整数数组中的 10个元素,元素之间一个空格隔开。
第二行输入一个正整数 n(1<n<19997),表示目标值。
输出描述:
abc
cba
# include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int main () {
string s;
cin >> s;
int len = s. length();
for (int i = len - 1; i >= 0; --i) {
cout << s[i];
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
答案
输出一个整数。如果数组中存在小于等于目标值并且离目标值最接近的两个数,则输出这两个数的和;如果数
组中不存在这样的两个数,即数组中任意两个数的和都超过了目标值,则输出 -1。
样例输入:
样例输出:
第 4 题
问答题
分配
题目描述:
疫情期间,社会爱心人士及单位组织为疫情捐赠了大量物资。其中有 n箱口罩物资需要小蓝为 2个疫情重灾区分
配。每箱口罩的数量也不完全相等,且只能整箱分配。为了公平,尽量使 2个疫情重灾区分得的口罩数量相
9 4 3 8 8 9 11 9 8 5
10
9
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int a[20];
int n;
int ans = - 1;
int main () {
for (int i = 1; i <= 10; ++i) {
cin >> a[i];
}
cin >> n;
for (int i = 1; i <= 10; ++i) {
for (int j = i + 1; j <= 10; ++j) {
if ((a[i] + a[j] <= n) && (n - a[i] - a[j]) <= n - ans) {
ans = a[i] + a[j];
}
}
}
if (ans != - 1)
cout << ans << endl;
else {
cout << "-1" << endl;
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
答案
等,也就是
2个疫情区分得的口罩数量差值最小。
例如: n为 3,3 箱口罩数量分别为 200、300 、110, 按照要求分配, 2个疫情区分得的口罩数量分别为
310(200+110) 和300 。
这时小蓝犯愁了,不知道如何才能使 2个疫情重灾区分得的口罩数量尽量接近。请你编写程序帮助小蓝解决这
个问题。
输入描述:
第一行输入一个正整数 n(n≤10),表示有n箱口罩。
第二行输入 n个不完全相等的正整数 (100≤每个正整数 ≤1000),表示每箱口罩的数量。正整数之间以一个空格隔
开。
输出描述:
输出两个正整数,分别表示 2个重灾区分得口罩的数量,两个正整数之间一个空格隔开,且如果两个正整数不
相同,需按照从大到小输出。
样例输入:
样例输出:
3
200 300 110
310 300
# include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
using namespace std;
int a[20];
int n;
int sum;
int ans;
void check (int x) {
int tmp = 0;
for (int i = 0; i < n; ++i) {
if ((x >> i) & 1) {
tmp += a[i + 1];
}
}
if (abs (sum - tmp - tmp) < abs(sum - ans - ans)) {
ans = tmp;
}
}
int main () {
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
第 5 题 问答题
组合
题目描述:
某校庆祝元旦,要求某班级选出 n位男生和 n位女生参加节目。由于节目需要,男女同学需要按照以下要求
第13届蓝桥杯C++青少组中_高级组选拔赛2022年1月22日真题-附答案,2022年1月蓝桥杯青少组STEMA等考C++中高级组真题答案