当前位置: 首页 > news >正文

历年蓝桥杯青少组省赛国赛C++中/高级组真题解析 | 2024年8月(省赛)

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总贴:历年蓝桥杯青少组省赛国赛C++中/高级组真题解析 | 汇总


选择题

第1题

定义 char a[]="hello\nworld",执行cout<<a,输出结果是( )

A.helloworld

B.hello
world

C.hellonworld

D.hello\nworld

【答案】:B

【解析】

\n输出时会换行。

第2题

\((11001010)_2+(F8)_{16}\) 的结果是( )。

A.\((111000011)_2\)

B.\((701)_8\)

C.\((1C2)_{16}\)

D.\((452)_{10}\)

【答案】:C

【解析】

\((11001010)_2+(F8)_{16}\)的结果是 \((450)_{10}\),依次计算四个选项,C正确

第3题

表达式4%12的结果是( )。

A.0

B.4

C.3

D.12

【答案】:B

【解析】

取模计算,4小于12,所以余数为4

第4题

下列选项中,逻辑表达式的值始终与B的真假无关的是( )。

A.(!A || B) && A

B.(A || B) && ( A && B)

C.(A && !A) || B

D.(A || B) && (A || !B)

【答案】:D

【解析】

A选项,当A为True时,结果取决于B

B选项直接依赖B的值

C选项表达式简化为B,完全由B决定

第5题

运行下面程序,输出结果是( )

e

A.196

B.197

C.198

D.199

【答案】:A

【解析】

程序的输出结果是196。左子树56,右子树108,根节点32,共196

编程题

第6题 看书

【题目来源】

洛谷:[B4300 蓝桥杯青少年组省赛 2024] 看书 - 洛谷

【题目描述】

一本书共 \(n\) 页,小明计划第一天看 \(x\) 页,此后每一天都要比前一天多看 \(y\) 页。请问小明几天可以看完这本书?

【输入】

一行输入三个整数 \(n\)\(x\)\(y\)\(20≤n≤5000\)\(1<x,y≤20\)),分别表示书的总页数、计划第一天看的页数以及此后每天都要比前一天多看的页数,整数之间以一个空格隔开。

【输出】

输出一个整数,表示小明几天可以看完这本书。

【输入样例】

100 10 5

【输出样例】

5

【算法标签】

《洛谷 B4300 看书》 #循环结构# #蓝桥杯青少年组# #2024#

【代码详解】

#include <bits/stdc++.h>
using namespace std;int main()
{int n;      // 目标总数int x, y;   // 初始值和增量int sum = 0; // 当前累计值// 输入目标值和初始参数cin >> n >> x >> y;// 初始累加sum += x;// 检查初始值是否已经满足条件if (sum >= n){cout << 1 << endl;  // 直接输出结果1(只需1次)return 0;}// 循环累加直到满足条件for (int i = 1; ; i++)  // 无限循环,通过break退出{// 按规则累加:x + i*ysum += x + i * y;// 检查是否达到目标if (sum >= n){cout << i + 1 << endl;  // 输出总次数(i+1)break;                  // 退出循环}}return 0;
}

【运行结果】

100 10 5
5

第7题 数字交换

【题目来源】

洛谷:[B4301 蓝桥杯青少年组省赛 2024] 数字交换 - 洛谷

【题目描述】

前导 \(0\):整数前对数值无影响的 \(0\)

例如:

  • \(0201\) 去除前导 \(0\) 后为 \(201\)
  • \(00321\) 去除前导 \(0\) 后为 \(321\)

给定一个正整数 \(n\),请将 \(n\) 的最高位与最低位的数字进行交换,并输出交换后的结果。如果交换后的结果有前导 \(0\),去除前导 \(0\) 后再输出结果。

例 1:\(n=173\),将 \(173\) 的最高位 \(1\) 与最低位 \(3\) 交换,交换后的结果为 \(371\)

例 2:\(n=10200\),将 \(10200\) 的最高位 \(1\) 与最低位 \(0\) 交换,交换后的结果为 \(00201\),结果有前导 \(0\),去除前导 \(0\) 后的结果为 \(201\)

【输入】

输入一个正整数 \(n\)\(100≤n≤10^9\)

【输出】

输出一个整数,表示将 \(n\) 的最高位与最低位的数字交换后的结果。如果交换后的结果有前导 \(0\),去除前导 \(0\) 后再输出结果

【输入样例】

173

【输出样例】

371

【算法标签】

《洛谷 B4301 数字交换》 #字符串# #蓝桥杯青少组# #2024#

【代码详解】

#include <bits/stdc++.h>
using namespace std;string s;  // 存储输入的字符串int main()
{cin >> s;  // 输入字符串// 交换字符串的首尾字符swap(s[0], s[s.size() - 1]);bool flag = false;  // 标记是否开始输出(用于跳过前导零)// 遍历处理字符串中的每个字符for (int i = 0; i < s.size(); i++){// 当前字符是'0'且尚未开始输出时,跳过(处理前导零)if (s[i] == '0' && flag == false)continue;else{// 输出当前字符,并标记已开始输出(不再跳过后续字符)cout << s[i];flag = true;}}return 0;
}

【运行结果】

173
371

第8题 出现奇数次的数

【题目来源】

洛谷:[B4302 蓝桥杯青少年组省赛 2024] 出现奇数次的数 - 洛谷

【题目描述】

奇数:指不能被 \(2\) 整除的整数。

例如:\(3\)\(5\) 是奇数;\(4\)\(6\) 不是奇数。

给定 \(n\) 个整数,其中只有一个数出现了奇数次,请找出这个数。

例如:\(7\) 个整数为 \(6\)\(2\)\(4\)\(6\)\(4\)\(2\)\(6\),其中只有 \(6\) 出现了奇数次,故输出 \(6\)

【输入】

第一行输入一个整数 \(n\)\(1≤n≤10^5\))。

第二行输入 \(n\) 个整数(\(1≤ 整数 ≤10^9\)),整数之间以一个空格隔开。数据保证只有一个数出现了奇数次。

【输出】

输出一个整数,表示出现了奇数次的数。

【输入样例】

7
6 2 4 6 4 2 6

【输出样例】

6

【算法标签】

《洛谷 B4302 出现奇数次的数》 #位运算# #蓝桥杯青少年组# #2024#

【代码详解】

#include <bits/stdc++.h>
using namespace std;const int N = 100005;  // 定义数组最大长度
int n;                  // 数组元素个数
int a[N];               // 存储输入数组
map<int, int> mp;       // 用于统计数字出现次数(未实际使用)int main()
{// 输入数组长度和元素cin >> n;for (int i = 1; i <= n; i++)cin >> a[i];// 对数组进行排序(升序)sort(a + 1, a + n + 1);int cnt = 1;  // 计数器,记录当前数字的连续出现次数// 遍历数组,查找出现奇数次的数字for (int i = 2; i <= n; i++){// 如果当前数字与前一个相同,增加计数if (a[i] == a[i - 1])cnt++;else{// 如果前一个数字出现次数为奇数,直接输出if (cnt % 2 == 1){cout << a[i - 1] << endl;return 0;}else{// 重置计数器cnt = 1;}}}// 检查最后一个数字的出现次数if (cnt % 2 == 1)cout << a[n] << endl;return 0;
}

【运行结果】

5
abcde
1 3 5 7 9
vxvbv

第9题 字母移位

【题目来源】

洛谷:[B4303 蓝桥杯青少年组省赛 2024] 字母移位 - 洛谷

【题目描述】

字母移位表示将字母按照字母表的顺序进行移动。

例如,b 向右移动一位是 c,f 向左移动两位是 d。

特别地,a 向左移动一位是 z,z 向右移动一位是 a。

给定一个仅包含小写字母且长度为 \(n\) 的字符串 \(s\),以及 \(n\) 个正整数 \(a_1,a_2,…,a_n\),接下来对字符串 \(s\) 按如下规律操作:

  1. 将第 \(1\) 位字符向左移动 \(a_1\) 位;
  2. 再将第 \(1\)\(2\) 位字符都向右移动 \(a_2\) 位;
  3. 再将第 \(1\)\(2\)\(3\) 位字符都向左移动 \(a_3\) 位;
  4. 再将第 \(1\)\(2\)\(3\)\(4\) 位字符都向右移动 \(a_4\) 位;

以此类推,直到将 \(s\) 的第 \(1\) 到第 \(n\) 位字符都(按规律向左或向右)移动 \(a_n\) 位。

最后,将操作完成后的字符串 \(s\) 输出。

例如,\(n=5\),字符串 \(s=abcde\)\(5\) 个正整数为 \(1,3,5,7,9\)

  1. 将 abcde 的第 \(1\) 位字符 a 向左移动 \(1\) 位,\(s\) 变为 zbcde;
  2. 再将 zbcde 的前 \(2\) 位字符 zb 向右移动 \(3\) 位,\(s\) 变为 cecde;
  3. 再将 cecde 的前 \(3\) 位字符 cec 向左移动 \(5\) 位,\(s\) 变为 xzxde;
  4. 再将 xzxde 的前 \(4\) 位字符 xzxd 向右移动 \(7\) 位,\(s\) 变为 egeke;
  5. 再将 egeke 的前 \(5\) 位字符 egeke 向左移动 \(9\) 位,\(s\) 变为 vxvbv。

最后,将操作完成后的字符串 vxvbv 输出。

【输入】

第一行,输入一个整数 \(n\)\(1≤n≤10^5\))。

第二行,输入一个仅包含小写字母且长度为 \(n\) 的字符串 \(s\)

第三行,输入 \(n\) 个整数 \(a_1,a_2,…,a_n\)\(1≤a≤10^9\)),整数之间以一个空格隔开。

【输出】

输出一个字符串,表示操作完成后的字符串 \(s\)

【输入样例】

5
abcde
1 3 5 7 9

【输出样例】

vxvbv

【算法标签】

《洛谷 B4303 字母移位》 #前缀和# #蓝桥杯青少组# #2024#

【代码详解】

#include <bits/stdc++.h>
using namespace std;#define int long long  // 使用长整型
const int N = 100005;  // 定义最大数组长度int n;                 // 字符串长度
int a[N];             // 存储处理后的数值数组
int sb[N];            // 后缀和数组
string s;             // 输入的字符串signed main()
{// 输入字符串长度和字符串cin >> n >> s;s = " " + s;       // 在字符串前添加空格,使索引从1开始// 输入并处理数值数组for (int i = 1; i <= n; i++){int x;cin >> x;// 奇数位置取负,偶数位置取正if (i % 2 != 0)a[i] = -x;elsea[i] = x;}// 计算后缀和数组(从后往前累加)for (int i = n; i >= 1; i--)sb[i] = sb[i + 1] + a[i];// 处理字符串中的每个字符for (int i = 1; i <= n; i++){// 计算字符偏移量(0-25对应a-z)int t = s[i] - 'a';// 计算新的字符位置(考虑循环和负数情况)t = ((t + sb[i]) % 26 + 26) % 26;// 转换回字符s[i] = t + 'a';}// 输出处理后的字符串(从索引1开始)for (int i = 1; i <= n; i++)cout << s[i];return 0;
}

【运行结果】

5
abcde
1 3 5 7 9
vxvbv
http://www.jsqmd.com/news/355247/

相关文章:

  • 如何基于 CANN 原生能力,构建一个支持 QoS 感知的 LLM 推理调度器
  • 2026国内最新家电售后外包咨询公司top5推荐!广东广州等地优质服务商权威榜单发布,专业服务助力品牌售后升级 - 品牌推荐2026
  • 边缘智能实战:基于 CANN `edge-ai-toolkit` 的 Atlas 500 智能小站部署方案
  • 哪些赖氨酸品牌受欢迎?2026年赖氨酸品牌市场表现TOP10榜发布,哪款占据多平台品类领先榜 - 资讯焦点
  • 卫浴十大品牌前十名揭晓!装修党建议收藏! - 资讯焦点
  • 如何在 CANN 推理引擎中实现毫秒级请求取消(Request Cancellation)机制
  • 02]SynPDF将BMP图片转为
  • 搜索P1784 数独
  • StreamingLLM:无需训练即可支持无限上下文的推理技术
  • 深入解析:C++ map和set
  • 大模型训练加速:基于 CANN `distributed-training-samples` 的多机多卡分布式训练实战
  • 2026.2.7 模拟赛
  • 构建生产级 AI 服务:基于 CANN `inference-server` 的高性能推理引擎实战
  • MoeKoeMusic v1.5.9:高颜值酷狗第三方客户端
  • KTV家具定制源头厂家选择哪家好,讲讲价格和口碑 - myqiye
  • 聊聊耐油O型密封圈货源平台推荐,这些品牌口碑怎么样? - mypinpai
  • CANN 高级调度篇:实现 Continuous Batching 与 PagedAttention
  • 2026年射灯品牌推荐,ARROWARROW箭牌照明“科技+美学+实用” - GEO排行榜
  • 2026年补偿导线高温线厂家好评榜:高温线/工业高温线/高压高温线/耐火线高温线/铁氟龙高温线 - 品牌策略师
  • 2026哪家咖啡豆品牌售后好?消费者关注的保障细节解析 - 品牌排行榜
  • 讲讲2026年诚信的通勤班车品牌企业,如何选择更合适 - 工业品牌热点
  • 2026年汽车高温线厂家榜单分析/高温线,硅胶高温线,柔性高温线,工业高温线,耐火线高温线 - 品牌策略师
  • 闲置的沃尔玛购物卡在哪能回收?抖抖收教你一招轻松处理! - 抖抖收
  • 2026年性价比高的咖啡豆品牌推荐:新手入门选购指南 - 品牌排行榜
  • 2026年杭州涂料店铺费用揭秘,靠谱防霉涂料店价格多少 - 工业推荐榜
  • 2026年高温线厂家选购推荐/硅胶高温线,工业高温线,高压高温线,耐火线高温线,铁氟龙高温线 - 品牌策略师
  • 2026年专业移民中介公司推荐,上海地区服务优质企业 - 工业设备
  • python验证端口是否开通成功
  • 剖析2026年山西有名汉堡品牌,靠谱的品牌排名情况 - 工业品网
  • 男士必备!手动剃须刀品牌大揭秘 - 品牌测评鉴赏家