2025年第十六届蓝桥杯省赛C++ 研究生组真题

2025年第十六届蓝桥杯省赛C++ 研究生组真题

1.说明

真题来源于十六届蓝桥杯赛后直播间,受大风天气影响的地区(北京、天津和河北)题目应该会变动,我这里参加的实际是河北C++研究生组。考虑到时间关系,将重点放在写研究生组真题上,但是由于算法实力有限,短时间内还不能够将所有题解整体出来,因此部分题目只放题目,等之后解出来了再补上题解。如果还对A组题目感兴趣的,可以看看2025年第十六届蓝桥杯省赛C++ A组真题,A组题目和研究生组省赛难度差不多。

2.题目A:数位倍数(5分)

【问题描述】

请问在 1 至 202504(含)中,有多少个数的各个数位之和是 5 的整数倍。例如:5、19、8025 都是这样的数。

c 复制代码
#include <iostream>

int main() {
    int count = 0;
    for (int i = 1; i <= 202504; ++i) {
        int sum = 0;
        int temp = i;
        while (temp > 0) {
            sum += temp % 10;
            temp /= 10;
        }
        if (sum % 5 == 0) {
            count++;
        }
    }
    std::cout << count << std::endl;
    return 0;
}

3.题目B:IPv6(5分)

【问题描述】

小蓝最近在学习网络工程相关的知识。他最近学习到,IPv6 地址本质上是一个 128 位的二进制数,而字符串形式的 IPv6 地址是由被冒号分开的八段 16 进制数组成的,例如,下面每行是一个字符串形式的 IPv6 地址:

0000:0000:0000:0000:0000:0000:0000:0000

0000:0001:0000:0000:0000:0001:0000:0000

0000:0001:00ab:0000:0023:0000:0a00:0e00

0000:0000:00ab:0000:000a:0001:0a00:0e00

0000:0000:00ab:0000:0000:0001:0a00:0e00

其中,每一段最长 4 位,且每一段的前导零都可以去掉(如果 4 位都为 0 需要写成 0)。

另外,IPv6 地址还可以将其中相邻的值为 0 的段合并压缩起来,用两个冒号来表示,不过只能压缩一段。

例如上述地址最短的压缩后的形式分别为

c 复制代码
::
0:1::1:0:0
0:1:ab:23:0:a00:e00
::ab:0:a:1:a00:e00
0:0:ab::1:a00:e00

小蓝想知道,所有 IPv6 地址的最短压缩形式的长度的和为多少?由于答案很大(甚至超过了 128 位二进制整数的范围),请填写答案时填写这个总和除以10^9+7的余数。

这里有一种暴力思路,可以提前计算出每个0-255对应的长度,存入到hash中,然后依使用6重循环拿到结果。

4.题目C:变换数组(10分)

【问题描述】

输入一个数组 a ,包含有 n 个元素 a1,a2,...,an。对这个数组进行 m 次变换,每次变换会将数组 a 中的每个元素 ai 转换为 ai · bitCount(ai)。其中 bitCount(x) 表示数字 x 的二进制表示中 1 出现的次数,例如 bitCount(3)=2,因为 3 的二进制表示为 11,其中 1 出现了两次。

请输出变换之后的数组内容。

【输入格式】

输入的第一行包含一个正整数 n ,表示数组 a 中的元素个数。

第二行包含 n 个整数 a1,a2,...,an,相邻整数之间使用一个空格分隔。

第三行包含一个整数 m,表示变换次数。

【输出格式】

输出一行,包含 n 个整数,相邻整数之间使用一个空格分隔,表示变换之后得到的数组 a。

【样例输入】

c 复制代码
2
5 7
2

【样例说明】

5=(101)2,7=(111) 2,第一次变化后 a=[10,21]。

10=(1010) 2,21=(10101) 2,第二次变换后 a=[20,63]。

【样例输出】

c 复制代码
20 63

5.题目D:最大数字(10分)

【问题描述】

我们有 n 个连续的整数 1,2,3,...,n,可以自由排列它们的顺序。

然后,我们把这些数字转换成二进制表示,按照排列顺序拼接形成一个新的二进制数。

我们的目标是让这个二进制数的值最大,并输出这个二进制对应的十进制表示。

【输入格式】

输入一行包含一个正整数 n 。

【输出格式】

输出一行包含一个整数表示答案。

【样例输入】

c 复制代码
3

【样例输出】

c 复制代码
30

【样例说明】

1 的二进制为 1;2 的二进制为 10;3 的二进制为 11;其组成的最大的二进制数字为 11110,对应的十进制数字为 30。

6.题目E:冷热数字队列(15分)

小蓝是一名计算机专业的学生,最近他学习了《操作系统》、《数据结构》等课程,他设计了一种名为"冷热数据队列"的数据结构,来对数据页进行管理。

冷热数据队列 q 可以看做由两个子队列组成:长度为 n1 的热数据队列 q1 和长度为 n2 的冷数据队列 q2 。当我们需要访问某个数据页 p 时:

(1)若 p 不在队列 q 中(即既不在 q1 中,也不在 q2 中),则加载数据页 p ,并插入到 q2 的首部。

(2)若 p 已经在队列 q 中,则将 p 移动至 q1 首部。

(3)当 q1 或 q2 队列容量不足时,会将其尾部的数据页淘汰出去。

(4)当 q1 已满,但 q2 未满时,从 q1 中淘汰出的数据页会移动到 q2 首部。

【输入格式】

输入的第一行包含两个正整数 n1,n2,用一个空格分隔。

第二行包含一个整数 m ,表示操作次数。

第三行包含 m 个正整数 v1, v2, ..., vm,表示依次访问到的数据页的编号,相邻整数之间使用一个空格分隔。

【输出格式】

输出两行。

第一行包含若干个整数,相邻整数之间使用一个空格分隔,依次表示 q1中的数据页。

第二行包含若干个整数,相邻整数之间使用一个空格分隔,依次表示 q2 中的数据页。

【样例输入】

c 复制代码
3 3
10
1 2 3 4 3 2 2 1 3 4

【样例输出】

c 复制代码
4 3 2
1

【样例说明】

7.题目F:01串(15分)

【问题描述】

给定一个由 0,1,2,3...的二进制表示拼接而成的长度无限的 01 串。其前若干位形如 011011100101110111... 。请求出这个串的前 x 位里有多少个 1 。

【输入格式】

输入的第一行包含一个正整数 x 。

【输出格式】

输出一行包含一个整数表示答案。

【样例输入】

c 复制代码
7

【样例输出】

c 复制代码
5

8.题目G:甘蔗(20分)

【问题描述】

小蓝种了一排甘蔗,甘蔗共 n 根,第 i 根甘蔗的高度为 ai 。小蓝想砍一些甘蔗下来品尝,但是他有强迫症,不希望甘蔗的高度显得乱糟糟的。具体来说,他给出了一个大小为 m 的整数集合 B = {b1,b2,...,bm} ,他希望在砍完甘蔗后,任意两根相邻的甘蔗之间的高度差 |ai - ai+1| 都要在这个集合 B 中。小蓝想知道他最少需要砍多少根甘蔗(对于高度为 h 的甘蔗,他可以将其砍成 x 高度的甘蔗,x ∈{0,1,2,...,h - 1})。

【输入格式】

输入的第一行包含两个正整数 n,m,用一个空格分隔。

第二行包含 n 个正整数 a1,a2,...,an ,相邻整数之间使用一个空格分隔。

第三行包含 m 个正整数 b1,b2,...,bm ,相邻整数之间使用一个空格分隔。

【输出格式】

输出一行包含一个整数表示答案。如果不能满足条件,输出 -1 。

【样例输入】

c 复制代码
6 3
6 7 3 4 9 12
2 3 5

【样例输出】

c 复制代码
2

【样例说明】

其中一种方案:将 a2 砍为 3,再将 a3 砍为 1。

9.题目H:原料采购(20分)

【问题描述】

小蓝负责一家工厂的原料采购。工厂有一辆运货卡车,其容量为 m 。工厂附近的采购点都在同一条路的同一方向上,一共有 n 个,每个采购点和工厂的距离各不相同。其中,第 i 个采购点的价格为 ai ,库存为 bi,距离为 ci。卡车每行驶一单位长度的路径就需要额外花费 o 。(返程没有花费,你也可以认为 o 实际是行驶两单位长度的花费)。请计算将卡车装满最少需要花费多少钱,如果没有任何方案可以装满请输出 -1 。

【输入格式】【输出格式】【样例输入】【样例输出】,因直播没有给出,欢迎大家在评论区补充(或者后续官方放出来我再补充一下)。这里应该是考察背包问题。

到这里就结束啦,整理不易,欢迎关注【Jerry说前后端】、点赞并分享,获取更多前端和算法知识。

相关推荐
大锦终1 分钟前
【C++】多态
c语言·开发语言·数据结构·c++
谢道韫6665 分钟前
37-串联所有单词的子串
开发语言·算法·c#
爱编程的小新☆7 分钟前
2025年第十六届蓝桥杯省赛JavaB组真题回顾
算法·职场和发展·蓝桥杯
callJJ9 分钟前
Dijkstra算法求解最短路径—— 从零开始的图论讲解(2)
java·数据结构·算法·intellij-idea·图论·dijkstra·图搜索算法
虾球xz13 分钟前
游戏引擎学习第227天
c++·学习·游戏引擎
uhakadotcom19 分钟前
入门教程:Keras和PyTorch深度学习框架对比
后端·算法·面试
不知名。。。。。。。。34 分钟前
c++------模板进阶
开发语言·c++
OKay_J38 分钟前
蓝桥杯备赛笔记(嵌入式)
笔记·stm32·学习·蓝桥杯
PHASELESS41141 分钟前
Java二叉树深度解析:结构、算法与应用实践指南
java·开发语言·数据结构·算法
牧木江41 分钟前
【从C到C++的算法竞赛迁移指南】第二篇:动态数组与字符串完全攻略 —— 写给C程序员的全新世界
c语言·c++·经验分享·笔记·算法