2025年1月蓝桥杯蓝桥C++(STEMA)中/高级
STEMA
2025
2025-06-09 11:23:56
78次
一、单选题
运行以下程序,输出的结果是()。
void foo(int arr[], int size) {
for (int i = 0; i < size; ++i) arr[i] += i;
}
int bar(int n) {
if (n <= 1) return 1;
return n * bar(n - 2);
}
int main() {
int arr[5] = {1,2,3,4,5};
foo(arr, 5);
int result = 0;
for (int i = 0; i < 5; ++i)
result += bar(arr[i]);
cout << "Result=" << result;
return 0;
} | A. Result=1066 |
B. Result=1067 |
| C. Result=1068 |
D. Result=1069 |
【知识点】 蓝桥杯C++中/高级
二、编程题
小球的重量
题目描述:
有 n 个小球,编号为 1 到 n,所有小球的重量均不相等。
按照编号顺序,依次给出 1 到 n - 1 号小球与其他小球的重量比较关系(< 表示小于,> 表示大于)。
请找出重量第 k 大的小球,并输出其编号。
例如:n = 4,有 4 个小球,比较关系如下:
1 号小球与 2、3、4 号小球的重量比较关系:小于 2 号,小于 3 号,大于 4 号;用 "< < >" 表示。
2 号小球与 3、4 号小球的重量比较关系:大于 3 号,大于 4 号;用 "> >" 表示。
3 号小球与 4 号小球的重量比较关系:大于 4 号;用 ">" 表示。
根据上述比较关系可得,按照重量由大到小排序后小球的编号分别为:2、3、1、4;当 k = 3 时,重量第 3 大的小球编号为 1。
输入描述:
共 n + 1 行;
第一行输入一个整数 n(1≤n≤2000),表示小球的数量;
第二行输入 n - 1 个字符,字符为 '>' 或 '<',依次表示 1 号小球与 2、3、...、n 号小球的重量比较关系;
第三行输入 n - 2 个字符,字符为 '>' 或 '<',依次表示 2 号小球与 3、4、...、n 号小球的重量比较关系;
... 第 n 行输入 1 个字符,字符为 '>' 或 '<',表示 n - 1 号小球与 n 号小球的重量比较关系;
以上输入中,同一行字符之间以一个空格隔开;
第 n + 1 行输入一个整数 k(1≤k≤n)。
输出描述:
输出一个整数,表示重量第 k 大的小球编号。
样例输入:
4 < < > > > > 3
样例输出:
1
【知识点】 蓝桥杯C++中/高级
单词验证
题目描述:
小丁在学习英语单词时发现,某些单词如果删除若干字母后(不改变剩余字母的顺序)可得到另一个单词。
现有 N 组数据,每组数据中给定两个仅包含小写字母的字符串,表示初始单词 s 和目标单词 t,请判断对于每组数据,能否从 s 中删除零个或多个字母得到 t,如果能得到输出 "YES",否则输出 "NO"。
例如:
N = 2,两组数据如下:
1)s = "adventure",t = "avenue",删除 "adventure" 中的第 2、6、8 个字母可得到"avenue",故输出 YES;
2)s = "good",t = "no",无论怎么删除都无法得到 t,故输出 NO。
输入描述:
第一行输入一个正整数 N(1≤N≤1000),表示数据组数;
接下来 N 行,每行输入两个仅包含小写字母的字符串,分别表示初始单词 s(1≤s 的长度≤500)和目标单词 t(1≤t 的长度≤500),字符串之间以一个空格隔开。
输出描述:
共 N 行,每行输出一个字符串,如果能从初始单词 s 中删除零个或多个字母得到目标单词 t,输出"YES",否则输出 "NO"。
样例输入:
2 adventure avenue good no
样例输出:
YES NO
【知识点】 蓝桥杯C++中/高级
分南瓜
提示信息:
奇数,指不能被 2 整除的整数。
例如:3、5、7 都是奇数。
题目描述:
农场有 3 块农田,每块农田有若干个南瓜,小夏希望将每块农田的南瓜分成两份,要求每份中的南瓜数量均为奇数。请帮助小夏逐一判断每块农田中南瓜的数量能否满足要求。
例如:3 块农田中南瓜的数量依次为 6,8,7;
第 1 块农田中南瓜数量为 6,可以分为 3 和 3 两份,均为奇数,满足条件;
第 2 块农田中南瓜数量为 8,可以分为 1 和 7 两份,均为奇数,满足条件;
第 3 块农田中南瓜数量为 7,无论如何分配,都无法确保两份南瓜的数量均为奇数,因此不满足条件。
输入描述:
一行输入 3 个整数(2≤整数≤500),分别表示每块农田中南瓜的数量,整数之间以一个空格隔开。
输出描述:
输出 3 个整数,依次表示对应农田中南瓜的数量是否满足分配要求,如果满足输出 1,否则输出 0,整数之间以一个空格隔开。
样例输入:
6 8 7
样例输出:
1 1 0
【知识点】 蓝桥杯C++中/高级
超级幸运数
题目描述:
乐乐有两个幸运数字,分别是 4 和 7。如果一个整数满足以下两个条件中的任意一个,乐乐就会称其为超级幸运数。条件如下:
1)整数中各数位上的数字都是幸运数字,例如 4、47、444;
2)整数中数位上所包含的所有幸运数字的总数是幸运数字,例如 414177(其中包含了 2 个 4 和 2 个7,共有 4 个幸运数字)。
给定 n 个整数,请判断其中有多少个超级幸运数。
例如:n = 3,3 个整数分别为 74、417、40444444;
整数 74 是超级幸运数,因为数位上的 7 和 4 都是幸运数字,满足条件 1;
整数 417 不是超级幸运数,因为数位中 1 不是幸运数字,不满足条件 1,且数位中幸运数字的总数是 2,
2 不是幸运数字,不满足条件 2;
整数 40444444 是超级幸运数,因为 40444444 的数位中幸运数字的总数是 7,7 是幸运数字,满足条件 2;
综上所述,共有 2 个超级幸运数。
输入描述:
第一行输入一个整数 n(1≤n≤1000);
第二行输入 n 个整数(1≤整数≤109),整数之间以一个空格隔开。
输出描述:
输出一个整数,表示超级幸运数的数量。
样例输入:
3 74 417 40444444
样例输出:
2
【知识点】 蓝桥杯C++中/高级
