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

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

      • 1.说明
      • 2.题目A:寻找质数(5分)
      • 3.题目B:黑白棋(5分)
      • 4. 题目C:抽奖(10分)
      • 5. 题目D:红黑树(10分)
      • 6. 题目E:黑客(15分)
      • 7. 题目F:好串的数目(15分)
      • 8. 题目G:地雷阵(20分)
      • 9. 题目H:扫地机器人(20分)

1.说明

    真题来源于十六届蓝桥杯赛后直播间,受大风天气影响的地区(北京、天津和河北)题目应该会变动,我这里参加的实际是河北C++研究生组。考虑到时间关系,将重点放在写研究生组真题上,所以C++ A组题目主要放题目资料,这里的题目要是想短时间给写出来还是太有挑战了,之后如果研究生组的题目看的差不多了再回来补一下A组题目,好像A组题目和研究生组题目难度差不多。

2.题目A:寻找质数(5分)

    如果一个正整数只能被 1 和它本身两个数整除,就称为一个质数。最小的几个质数依次是 2,3,5,7,11,13,···,请问,第 2025 个质数是多少?

#include <iostream>
#include <cmath>// 判断一个数是否为质数
bool isPrime(int num) {if (num < 2) return false;for (int i = 2; i <= std::sqrt(num); ++i) {if (num % i == 0) return false;}return true;
}int main() {int count = 0;int num = 2;while (true) {if (isPrime(num)) {++count;if (count == 2025) {std::cout << "第 2025 个质数是: " << num << std::endl;break;}}++num;}return 0;
}

3.题目B:黑白棋(5分)

    小蓝最近迷上了一款名为“黑白棋填充”的游戏。该游戏在一个方形网格棋盘上进行,其中部分格子已经填有黑色或白色的棋子,而其他格子为空,等待玩家填入棋子。游戏规则是,玩家需要按照以下规则填满整个棋盘,才能算作胜利:
(1) 黑白棋子数量均等:在每一行和每一列中,黑色棋子和白色棋子的数量必须相等。
(2)相邻棋子限制:在棋盘的任何一行或一列中,不能有超过两个相同颜色的棋子连续排列(即不允许出现“黑黑黑”或“白白白”的情况)。
(3)行列唯一性:每一行的棋子排列方式必须是唯一的,不能与棋盘中的任何其他行完全相同。每一列的棋子排列方式必须是唯一的,不能与棋盘中的任何其他列完全相同。行与列之间的棋子排列不作比较,即行可以与列相同,无需满足行列间的唯一性。
在这里插入图片描述
提示:二进制表示法搜索剪枝。100000000000000000001000001100001111。

4. 题目C:抽奖(10分)

    LQ 商场为了回馈广大用户,为在此消费的用户提供了抽奖机会:抽奖机有三个转轮,每个转轮上都分布有 n 个数字图案,标号为 1 ~ n ,按照从 1 到 n 顺序转动,当转到第 n 个图案时会从第一个继续开始。奖项如下:
(1)三个相同的图案,积分 +200 ;
(2)两个相同的图案,积分 +100 ;
(3)三个数字图案,从左到右连续(例如 1,2,3 ),积分 +200 ;
(4)三个数字图案,经过顺序调整后连续(例如 2,1,3 或 3,2,1 ),积分 +100 ;
    抽奖机处于初始状态,三个转轮都处于第一个位置。每次开始抽奖,都会产生三个对应的随机数 xi1,xi2 ,xi3 ,表示第 j 个转轮会向后转动 xij 次停下。下次抽奖时,转轮会从上一次转动后的位置开始继续转动。
    注意,一次抽奖最多只能获得一次积分,如果同时命中多个奖项,以积分最大的那个奖项为准。请问,如果执行 m 次抽奖,总积分值是多少?

【输入格式】
    输入的第一行包含一个正整数 n,表示转轮大小。
    第二行包含 n 个正整数 a 1 , a 2 , ⋯ , a n a_1,a_2,\cdots,a_n a1,a2,,an,依次表示第一个转轮上的数字图案,相邻整数之间使用一个空格分隔。
    第三行包含 n 个正整数 b 1 , b 2 , ⋯ , b n b_1,b_2,\cdots,b_n b1,b2,,bn,依次表示第二个转轮上的数字图案,相邻整数之间使用一个空格分隔。
    第四行包含 n 个正整数 c 1 , c 2 , ⋯ , c n c_1,c_2,\cdots,c_n c1,c2,,cn,依次表示第三个转轮上的数字图案,相邻整数之间使用一个空格分隔。
    第五行包含一个整数 m,表示抽奖次数。
    接下来 ( m ) 行,每行包含三个正整数 (xi1,xi2,xi3),相邻整数之间使用一个空格分隔。
【输出格式】
    输出一行包含一个整数表示答案,即 ( m ) 次抽奖累计获得的积分的值。
【样例输入】

4
3 2 4 1
2 2 2 2
4 3 0 9
3
4 4 4
3 1 1
40 39 2

【样例输出】

300

【样例说明】
    三个转轮在初始状态下都在位置 1。
    第一次抽奖,三个转轮都转动 4 次,都转一整圈到达位置 1,三个转轮上的数字图案分别是 3、2、4,积分 +100;
    第二次抽奖,第一个转轮转动 3 次到达位置 4,第二个转轮转动 1 次到达位置 2,第三个转轮转动 1 次到达位置 2,三个转轮上的数字图案分别是 1、2、3,积分 +200;
    第三次抽奖,第一个转轮转动 40 次到达位置 4,第二个转轮转动 39 次到达位置 1,第三个转轮转动 2 次到达位置 4,三个转轮上的数字图案分别是 1、2、9,积分不增加。
    因此总积分为 300。

5. 题目D:红黑树(10分)

【问题描述】
    小蓝最近学习了红黑树,红黑树是一种特殊的二叉树,树上的结点有两种类型:红色结点和黑色结点。
    小蓝在脑海中构造出一棵红黑树,构造方式如下:
(1)根结点是一个红色结点;
(2)如果当前结点 curNode 是红色结点,那么左子结点 curNode.left 是红色结点,右子结点 curNode.right 是黑色结点;
(3)如果当前结点 curNode 是黑色结点,那么左子结点 curNode.left 是黑色结点,右子结点 curNode.right 是红色结点;
    此二叉树前几层的形态如下图所示:
在这里插入图片描述
【输入格式】
    输入的第一行包含一个正整数 ( m ),表示小蓝挑选的结点数。
    接下来 ( m ) 行,每行包含两个正整数 (ni,ki),用一个空格分隔,表示小蓝挑选的结点是第 ni 行(从上往下数)第 ki 个(从左往右数)结点。
【输出格式】
    输出 ( m ) 行,每行包含一个字符串,依次表示小蓝每次挑选的结点的答案。RED 表示红色结点,BLACK 表示黑色结点。
【样例输入】

2
1 1
2 2

【样例输出】

RED
BLACK

6. 题目E:黑客(15分)

【问题描述】
    小蓝正在两台电脑之间拷贝数据,数据是一个 (n×m) 大小的正整数矩阵,因此总共有 (n×m + 2) 个由空格分开的整数,其中前两个整数分别为 (n) 和 (m)。然而,有黑客入侵了小蓝的电脑,导致这 (n×m + 2) 个正整数的顺序被打乱了,小蓝想知道最多可能有多少个不同的原矩阵。
    两个矩阵相同当且仅当它们行数相同、列数分别相同,且每个位置上的数相同。
【输入格式】
    输入的第一行包含一个正整数 (n×m + 2)。
    第二行包含 (n×m + 2) 个正整数 (a1,a2,…,an×m + 2),相邻整数之间使用一个空格分隔。
【输出格式】
    输出一行包含一个整数表示答案。答案可能很大,请输出答案除以 1000000007 的余数。
【样例输入】

2 2 1 4 3 3

【样例输出】

24

7. 题目F:好串的数目(15分)

【问题描述】
    对于一个长度为 (n) 的字符串 (s = s0s1…sn-1) 来说,子串的定义是从中选出两个下标 l,r(0 ≤ l ≤ r ≤n-1),这之间所有的字符组合起来的一个新的字符串:(s’ = sl…sr) 就是其中一个子串。
    现在给出一个只有数字字符 0~9 组成的数字字符串,小蓝想要知道在其所有的子串中,有多少个子串是好串。一个子串是好串,当且仅当它满足以下两个条件之一:
(1)单字符子串一定是好串,即当子串长度为 1 时,它总是好串;
(2)长度大于 1 时,可以拆分为两个连续非递减子串。
    其中,一个串 (p = p0p1…pn-1) 为连续非递减子串是指,对于所有 (1≤ i < k),满足 (pi = pi-1) 或 (pi = pi-1+1)。即数字串中的每一个数字,要么等于上一个数字,要么等于上一个数字加 1。例如 12233、456 是连续非递减子串。
【输入格式】
    输入一行包含一个字符串 (s)。
【输出格式】
    输出一行包含一个整数表示答案,即好串的数目。
【样例输入】

12258

【样例输出】

12

【样例说明】
    长度为1的好串:1、2、2、5、8。它们长度都为1,都是好串。
    长度为2的好串:12、22、25、58。12可以分割为1、2两个连续非递减子串,其它类似。
    长度为3的好串:122、225。122可以分割为12、2两个连续非递减子串;225可以分割为22、5两个连续非递减子串。
    长度为4的好串:1225。1225可以分割为122、5两个连续非递减子串。
    总计12个好串。

8. 题目G:地雷阵(20分)

【问题描述】
    小蓝正在平面直角坐标系中的第一象限里玩一个逃生小游戏,在第一象限中埋有 (n) 颗地雷,第 i 颗地雷的坐标为 (xi, yi),触发范围为以 (xi, yi) 为圆心,半径为 ri 的圆。一旦小蓝走进了圆内就会触发地雷导致游戏失败。小蓝初始在原点 (0,0) 上,他需要在第一象限内选择一个方向一直往前走,如果能不触发任何地雷即可成功通关游戏。他想知道在 [0,π/2] 中均匀随机选择一个方向,即在 (0°)(朝向 x 轴正方向)至 90°(朝向 y 轴正方向)之间随机选择一个方向,通关游戏的概率是多少?
【输入格式】
    输入的第一行包含一个正整数 (n)。
接下来 (n) 行,每行包含三个正整数 (xi, yi),相邻整数之间使用一个空格分隔。
【输出格式】
    输出一行包含一个实数,四舍五入保留三位小数,表示答案。
【样例输入】

2
1 3 1
3 1 1

【样例输出】

0.181

9. 题目H:扫地机器人(20分)

【问题描述】
    在一个含有 n 个点 n 条边的无重边无自环的连通无向图中,有一个扫地机器人在执行清扫作业,其中结点 i 的标记 ti ∈{0, 1},如果为 1,则说明该结点需要进行清扫,扫地机器人在到达这个结点时会顺便进行清扫工作。机器人想知道,如果选定任意结点出发,每条边只能经过一次的话,最多能清扫多少个待清扫结点?
【输入格式】
    输入的第一行包含一个正整数 n。
    第二行包含 n 个整数 t1, t2, … , tn,相邻整数之间使用一个空格分隔。
    接下来 n 行,每行包含两个正整数 ui, vi,用一个空格分隔,表示结点 ui 和结点 vi 之间有一条边。
【输出格式】
    输出一行包含一个整数表示答案。
【样例输入】

9
1 0 1 0 0 1 1 0 1
2 8
2 9
2 5
1 5
1 3
1 4
4 5
4 6
6 7

【样例输出】

4

【样例说明】
    其中一种路线:3 → 1 → 4 → 6 → 7。
    到这里就结束啦,整理不易,欢迎关注【Jerry说前后端】、点赞并分享,获取更多前端和算法知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/76875.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM初探——走进类加载机制|三大特性 | 打破双亲委派SPI机制详解

目录 JVM是什么&#xff1f; 类加载机制 Class装载到JVM的过程 装载&#xff08;load&#xff09;——查找和导入class文件 链接&#xff08;link&#xff09;——验证、准备、解析 验证&#xff08;verify&#xff09;——保证加载类的正确性 准备&#xff08;Prepare&…

分布式微服务系统架构第106集:jt808,补充类加载器

加群联系作者vx&#xff1a;xiaoda0423 仓库地址&#xff1a;https://webvueblog.github.io/JavaPlusDoc/ https://1024bat.cn/ 类加载器 类与类加载器 判断类是否“相等” 任意一个类&#xff0c;都由加载它的类加载器和这个类本身一同确立其在 Java 虚拟机中的唯一性&#xf…

利用 pyecharts 实现地图的数据可视化——第七次人口普查数据的2d、3d展示(关键词:2d 、3d 、map、 geo、涟漪点)

参考文档&#xff1a;链接: link_pyecharts 官方文档 1、map() 传入省份全称&#xff0c;date_pair 是列表套列表 [ [ ],[ ] … ] 2、geo() 传入省份简称&#xff0c;date_pair 是列表套元组 [ ( ),( ) … ] 1、准备数据 population_data&#xff1a;简称经纬度 population_da…

Enovia许可释放

随着企业规模的扩大和业务的不断增长&#xff0c;Enovia许可证的管理变得至关重要。在许多情况下&#xff0c;企业可能面临许可证资源浪费或不足的问题。为了解决这一问题&#xff0c;Enovia提供了许可释放功能&#xff0c;帮助企业更加灵活地管理和使用许可证资源。本文将介绍…

每日一道leetcode(回来了!!!)

236. 二叉树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; 题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足…

【Redis】布隆过滤器应对缓存穿透的go调用实现

布隆过滤器 https://pkg.go.dev/github.com/bits-and-blooms/bloom/v3 作用&#xff1a; 判断一个元素是不是在集合中 工作原理&#xff1a; 一个位数组&#xff08;bit array&#xff09;&#xff0c;初始全为0。多个哈希函数&#xff0c;运算输入&#xff0c;从而映射到位数…

【ROS2】行为树 BehaviorTree(四):组合使用子树

1、大树调用子树 如下图,左边为大树主干: 1)如果门没有关,直接通过; 2)如果门关闭了,执行开门动作,然后通过 右边为子树,主要任务是开门 1)尝试直接开门; 2)尝试开锁开门,最多尝试5次; 3)最后尝试砸门! XML如何描述大树主干调佣子树:使用关键字 SubTree 来…

【口腔粘膜鳞状细胞癌】文献阅读

写在前面 看看文章&#xff0c;看看有没有思路 文献 The regulatory role of cancer stem cell marker gene CXCR4 in the growth and metastasis of gastric cancer IF:6.8 中科院分区:1区 医学WOS分区: Q1 目的&#xff1a;通过 scRNA-seq 结合大量 RNA-seq 揭示癌症干细胞…

【ComfyUI】蓝耘元生代 | ComfyUI深度解析:高性能AI绘画工作流实践

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能&#xff08;AI&#xff09;通过算法模拟人类智能&#xff0c;利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络&#xff08;如ChatGPT&…

深入理解Java中的队列:核心操作、实现与应用

队列&#xff08;Queue&#xff09;是计算机科学中最基础且重要的数据结构之一&#xff0c;遵循 先进先出&#xff08;FIFO&#xff09; 的规则。Java通过java.util.Queue接口及其丰富的实现类为开发者提供了强大的队列工具。本文将详细解析Java队列的核心操作、常见实现类及其…

idea里面不能运行 node 命令 cmd 里面可以运行咋回事啊

idea里面不能运行 node 命令 cmd 里面可以运行咋回事啊 在 IntelliJ IDEA&#xff08;或其他 JetBrains 系列 IDE&#xff09;中无法运行某些命令&#xff0c;但在系统的命令提示符&#xff08;CMD&#xff09;中可以正常运行&#xff0c;这种情况通常是由于以下原因之一导致的…

Express学习笔记(六)——前后端的身份认证

目录 1. Web 开发模式 1.1 服务端渲染的 Web 开发模式 1.2 服务端渲染的优缺点 1.3 前后端分离的 Web 开发模式 1.4 前后端分离的优缺点 1.5 如何选择 Web 开发模式 2. 身份认证 2.1 什么是身份认证 2.2 为什么需要身份认证 2.3 不同开发模式下的身份认证 3. Sessio…

微服务与Spring Cloud Alibaba简介

微服务&#xff08;或微服务架构&#xff09;是一种云原生架构方法&#xff0c;其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。本单元主要介绍微服务架构的定义、微服务的特征、微服务架构面临的挑战、Spring Cloud 定义、Spring Cloud 核心组件、Spring C…

JPG同步删除RAW批处理文件

相机挑选JPG照片&#xff0c;同步删除RAW格式文件&#xff0c;批处理文件bat&#xff0c;放到JPG和NEF文件夹根目录 – NEF 文件夹 – JPG 文件夹 文件同步删除.bat echo off:: 要同步的文件夹及文件后缀名&#xff08;相同&#xff09;&#xff0c;即要删除文件的目录 set de…

InnoDB的MVCC实现原理?MVCC如何实现不同事务隔离级别?MVCC优缺点?

概念 InnoDB的MVCC&#xff08;Multi-Version Concurrency Control&#xff09;即多版本并发控制&#xff0c;是一种用于处理并发事务的机制。它通过保存数据在不同时间点的多个版本&#xff0c;让不同事务在同一时刻可以看到不同版本的数据&#xff0c;以此来减少锁竞争&…

针对 Java从入门到精通 的完整学习路线图、各阶段技术点、CTO进阶路径以及经典书籍推荐。内容分阶段展开,兼顾技术深度与职业发展

以下是针对 Java从入门到精通 的完整学习路线图、各阶段技术点、CTO进阶路径以及经典书籍推荐。内容分阶段展开&#xff0c;兼顾技术深度与职业发展。 一、学习路线图分阶段详解 阶段1&#xff1a;Java基础入门&#xff08;3-6个月&#xff09; 目标&#xff1a;掌握Java核心…

报错:Nlopt

报错&#xff1a;Nlopt CMake Error at TGH-Planner/fast_planner/bspline_opt/CMakeLists.txt:20 (find_package):By not providing "FindNLopt.cmake" in CMAKE_MODULE_PATH this project hasasked CMake to find a package configuration file provided by "…

鸿蒙公共通用组件封装实战指南:从基础到进阶

一、鸿蒙组件封装核心原则 1.1 高内聚低耦合设计 在鸿蒙应用开发中&#xff0c;高内聚低耦合是组件封装的关键准则&#xff0c;它能极大提升代码的可维护性与复用性。 从原子化拆分的角度来看&#xff0c;我们要把复杂的 UI 界面拆分为基础组件和复合组件。像按钮、输入框这…

Linux 网络基础二 ——应用层HTTP\HTTPS协议

我们程序员写的一个个解决我们实际问题&#xff0c;满足我们日常需求的网络程序&#xff0c;都是在应用层。 前面写的套接字接口都是传输层经过对 UDP 和 TCP 数据发送能力的包装&#xff0c;以文件的形式呈现给我们&#xff0c;让我们可以进行应用层编程。换而言之&#xff0c…

Spark-SQL

Spark-SQL 概述 Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块 Shark 是伯克利实验室 Spark 生态环境的组件之一&#xff0c;是基于 Hive 所开发的工具&#xff0c;它修改了内存管理、物理计划、执行三个模块&#xff0c;并使之能运行在 Spark 引擎上…