2025年5月蓝桥杯蓝桥C++(省赛)中/高级
省赛
2025
2025-07-24 13:22:48
115次
一、单选题
二、编程题
吃粽子
题目描述:
端午节到了,部落联盟准备了 k 个粽子。n 个部落首领按编号 1 到 n 轮流吃粽子。
每轮每人吃的粽子数等于轮次数(第 1 轮每人吃 1 个,第 2 轮每人吃 2 个,依此类推),直到吃掉最后一个粽子。
吃掉最后一个粽子的首领即为获胜者。给定 n 和 k,请计算获胜的首领编号。
例如,n = 3,k = 13,吃粽子过程如下:
第一轮,1 号首领吃 1 个粽子(第 1 个),2 号首领吃 1 个粽子(第 2 个),3 号首领吃 1 个粽子(第 3 个);
第二轮,1 号首领吃 2 个粽子(第 4、5 个),2 号首领吃 2 个粽子(第 6、7 个),3 号首领吃 2 个粽子(第 8、9 个);
第三轮,1 号首领吃 3 个粽子(第 10、11、12 个),2 号首领吃掉最后一个粽子;
显然,2 号首领是获胜者。
输入描述:
一行输入两个整数 n 和 k(2≤n≤105,1≤k≤109),分别表示部落首领的数量以及粽子的数量,整数间以一个空格隔开。
输出描述:
输出一个整数,表示获胜的首领编号。
样例输入:
3 13
样例输出:
2
【知识点】 蓝桥杯C++中/高级
购物活动
题目描述:
某在线购物平台推出了两种优惠活动。每位顾客在同一订单中只能享受其中一种优惠。具体优惠规则如下:
(1)五折优惠:顾客可以享受商品总价格的五折(即原价 × 0.5);
(2)满减优惠:如果顾客购买的商品总价格达到或超过 300 元,则可以在付款时直接减免 200 元。
给定顾客一笔订单的实际支付金额,请计算该顾客可能购买的商品总价格的最大值是多少?
例如:顾客实际支付 120 元。如果他最初选择的是优惠( 1),则商品的总价格为 240 元;
如果他最初选择的是优惠(2),则商品的总价格为 320 元;显然,该顾客购买的商品总价格的最大值为 320 元。
输入描述:
输入一个整数(1≤整数≤1000),表示顾客实际支付的金额。
输出描述:
输出一个整数,表示该顾客可能购买的商品总价格的最大值。
样例输入:
120
样例输出:
320
【知识点】 蓝桥杯C++中/高级
零食好友
题目描述:
有 n 个小朋友去参加户外野餐活动,他们被分成了 m 个小组,保证每个小组至少有一个小朋友。
在野餐过程中,同一小组内的任意两个小朋友都会互相分享零食,成为一对“零食好友”。
你的任务是编写一个程序,请计算对于不同的分组方案,每种方案中的所有小组的“零食好友”的对数之和,并输出其中最小值和最大值分别是多少。
例如:n = 4,m = 2;4 个小朋友被分为 2 个小组。共有两种分组方案:
(1)第一组 1 人,第二组 3 人,则第一组有 0 对“零食好友”,第二组有 3 对“零食好友”,共有 3 对“零食好友”;
(2)第一组 2 人,第二组 2 人,则第一组有 1 对“零食好友”,第二组有 1 对“零食好友”,共有 2 对“零食好友”。
则所有分组方案中,“零食好友”的对数之和的最小值是 2,最大值是 3。
输入描述:
本题的每个测试点都有多组测试数据,格式如下:
第一行输入一个整数 T(1≤T≤100),表示数据组数;
接下来 T 组数据,每组数据输入仅一行,包含两个整数 n 和 m(1≤m≤n≤10^9),分别表示该组数据中小朋友的数量以及分组数量,整数之间以一个空格隔开。
输出描述:
共 T 行,每行输出两个整数,表示对应的测试数据中“零食好友”对数的最小值和最大值,整数之间以一个空格隔开。
样例输入:
2 4 2 8 5
样例输出:
2 3 3 6
【知识点】 蓝桥杯C++中/高级
弹球游戏
题目描述:
有一个弹球游戏,游戏由 n 行 m 列的网格组成,除最后一行的网格外,其余每个网格中都有一个元素(仙人掌、旋风或地洞)。将弹球投向第一行的网格,弹球到达不同的元素网格会有不同的效果:
(1)到达仙人掌网格:弹球被粘住,无法再移动;

(2)到达旋风网格:弹球可被吹向相邻的三个网格之一:左下、正下、右下,若某个方向无相邻网格,则不吹向该方向;

(3)到达地洞网格:弹球被向下传送两个网格,若超出网格范围,则传送到地洞正下方相邻的网格。

给定网格的行数 n 和列数 m,以及每个网格中的元素类型,请计算弹球从第一行到达最后一行的网格有多少条路线。
例如:n = 3,m = 3;3 行 3 列的网格如下图所示:

弹球一共有 4 条路线到达最后一行:

输入描述:
第一行输入两个整数 n、m(3≤n,m≤100),表示弹球游戏中网格的行数和列数,整数之间以一个空格隔开;
接下来输入 n - 1 行,表示第 1 行到第 n - 1 行的网格情况,每行 m 个整数,整数只能为 1、2、3;
1 表示该网格元素是仙人掌、2 表示该网格元素是旋风,3 表示该网格元素是地洞,同一行的整数之间以一个空格隔开;
最后一行输入 m 个 0,0 表示该网格是第 n 行(最后一行)的网格,整数之间以一个空格隔开。
输出描述:
输出一个整数,表示弹球从第一行到达最后一行的网格有多少条路线。
样例输入:
3 3 1 2 3 3 1 2 0 0 0
样例输出:
4
【知识点】 蓝桥杯C++中/高级
水龙头
题目描述:
小明在 0 时刻(初始时刻)将一个空桶放置在漏水的水龙头下。已知桶的容量为 H 升,并且每小时桶内的水量增加 x 升。
小明每经过一个小时就会观察一次桶的水位。请计算小明第一次观察到桶内的水溢出时,距离初始时刻经过了多少小时?
输入描述:
一行输入两个整数 H 和 x(10≤H≤100,1≤x≤20),分别表示桶的容量以及每小时桶内增加的水量,整数之间以一个空格隔开。
输出描述:
输出一个整数,表示小明第一次看到桶中的水溢出来时,距离初始时刻经过的小时数。
样例输入:
10 3
样例输出:
4
【知识点】 蓝桥杯C++中/高级
