第十六届蓝桥杯大赛软件赛省赛 Java 研究生组 真题
第十六届蓝桥杯大赛软件赛省赛
Java 研究生组 gzh 大学竞赛君提供
【选手须知】
考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试
题。
考试时间为 4 小时。考试期间选手可浏览自己已经提交的答案,被浏览的
答案允许拷贝。时间截止后,将无法继续提交或浏览答案。
对同一题目,选手可多次提交答案,以最后一次提交的答案为准。
选手必须通过浏览器方式提交自己的答案。选手在其它位置的作答或其它
方式提交的答案无效。
试题包含“结果填空”和“程序设计”两种题型。
结果填空题:要求选手根据题目描述直接填写结果。求解方式不限。不要
求源代码。把结果填空的答案直接通过网页提交即可,不要书写多余的内容。
程序设计题:要求选手设计的程序对于给定的输入能给出正确的输出结果。
考生的程序只有能运行出正确结果才有机会得分。
注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
所有源码必须在同一文件中。调试通过后,拷贝提交。
注意:不要使用 package 语句。
注意:选手代码的主类名必须为:Main,否则会被判为无效代码。
注意:如果程序中引用了类库,在提交时必须将 import 语句与程序的其
他部分同时提交。只允许使用 Java 自带的类库。
第十六届蓝桥杯大赛软件赛省赛
1第十六届蓝桥杯大赛软件赛省赛 Java 研究生组
试题 A: 数位倍数
本题总分:5 分
【问题描述】
请问在 1 至 202504 (含)中,有多少个数的各个数位之和是 5 的整数倍。
例如:5 、19 、8025 都是这样的数。
【答案提交】
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个
整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
试题 A: 数位倍数
2第十六届蓝桥杯大赛软件赛省赛 Java 研究生组
试题 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 的段合并压缩起来,用两个冒
号来表示,不过只能压缩一段。
例如上述地址最短的压缩后的形式分别为
::
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 位二进制整数的范围),请填写答案时填写这个总和除以
109 + 7 的余数。
试题 B: IPv6
3第十六届蓝桥杯大赛软件赛省赛 Java 研究生组
【答案提交】
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个
整数(在 0 到 109 + 6 的范围内),在提交答案时只填写这个整数,填写多余的
内容将无法得分。
试题 B: IPv6
4第十六届蓝桥杯大赛软件赛省赛 Java 研究生组
试题 C: 变换数组
时间限制: 3.0s
内存限制: 512.0MB
本题总分: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 。
【样例输入】
2
5 7
2
【样例输出】
20 63
【样例说明】
5 = (101)2 ,7 = (111)2 ,第一次变化后 a = [10, 21] 。
试题 C: 变换数组
5第十六届蓝桥杯大赛软件赛省赛 Java 研究生组
10 = (1010)2 ,21 = (10101)2 ,第二次变换后 a = [20, 63] 。
【评测用例规模与约定】
对于 30% 的评测用例,1 ≤ n ≤ 10 ;
对于 60% 的评测用例,1 ≤ n ≤ 100 ;
对于所有评测用例,1 ≤ n ≤ 103 ,0 ≤ m ≤ 5 ,0 ≤ ai ≤ 1000 。
试题 C: 变换数组
6第十六届蓝桥杯大赛软件赛省赛 Java 研究生组
试题 D: 最大数字
时间限制: 3.0s
内存限制: 512.0MB
本题总分:10 分
【问题描述】
我们有 n 个连续的整数 1, 2, 3, · · · , n,可以自由排列它们的顺序。
然后,我们把这些数字转换成二进制表示,按照排列顺序拼接形成一个新
的二进制数。
我们的目标是让这个二进制数的值最大,并输出这个二进制对应的十进制
表示。
【输入格式】
输入一行包含一个正整数 n 。
【输出格式】
输出一行包含一个整数表示答案。
【样例输入】
3
【样例输出】
30
【样例说明】
1 的二进制为 1 ;2 的二进制为 10 ;3 的二进制为 11 ;其组成的最大的二
进制数字为 11110 ,对应的十进制数字为 30 。
【评测用例规模与约定】
对于 20% 的评测用例,1 ≤ n ≤ 10 ;
试题 D: 最大数字
7第十六届蓝桥杯大赛软件赛省赛 Java 研究生组
对于 40% 的评测用例,1 ≤ n ≤ 100 ;
对于 60% 的评测用例,1 ≤ n ≤ 500 ;
对于 80% 的评测用例,1 ≤ n ≤ 1000 ;
对于所有评测用例,1 ≤ n ≤ 10000 。
试题 D: 最大数字
8第十六届蓝桥杯大赛软件赛省赛Java研究生组
试题 E: 小说
时间限制: 3.0s
内存限制: 512.0MB
本题总分:15 分
【问题描述】
小蓝是一位网络小说家。现在他正在撰写一部新的推理小说,这部小说有
n 个不同的人物。
小说的每一章都有以下三种情节的一种:
1、A 发现 B 不知道真相。
2、A 发现 B 知道真相。
3、A 知道了真相。
为了保证读者的协调和新鲜感,小蓝的小说还要满足以下要求:
1、“ B 发现 A 不知道真相” 不能在 “ A 知道了真相” 后。
2、“ B 发现 A 知道真相” 不能在 “ A 知道了真相” 前。
3、“ B 发现 A 不知道真相” 不能在 “ B 发现 A 知道真相” 后。
4、相邻的两章情节类型不同,例如如果第一章是 A 发现 B 不知道真相那
么第二章就不能是 C 发现 D 不知道真相。
5、完全相同的情节不能出现两次。
现在小蓝希望知道,他最多能写多少章。
【输入格式】
输入的第一行包含一个正整数 n ,表示小说人数。
【输出格式】
输出一行包含一个整数表示答案,即小蓝最多能写多少章小说。
【样例输入 1】
2
试题E: 小说
9第十六届蓝桥杯大赛软件赛省赛 Java 研究生组
【样例输出 1】
6
【样例说明 1】
以下是一种可能的情况:
1、B 发现 A 不知道真相。
2、A 知道了真相。
3、B 发现 A 知道真相。
4、A 发现 B 不知道真相。
5、B 知道了真相。
6、A 发现 B 知道真相。
小蓝一共能写 6 章。
【样例输入 2】
3
【样例输出 2】
13
【评测用例规模与约定】
对于 30% 的评测用例,n ≤ 5 ;
对于所有评测用例,1 ≤ n ≤ 109 。
试题 E: 小说
10第十六届蓝桥杯大赛软件赛省赛 Java 研究生组
试题 F: 01 串
时间限制: 3.0s
内存限制: 512.0MB
本题总分:15 分
【问题描述】
给定一个由 0, 1, 2, 3 · · · 的二进制表示拼接而成的长度无限的 01 串。其前
若干位形如 011011100101110111 · · · 。
请求出这个串的前 x 位里有多少个 1 。
【输入格式】
输入的第一行包含一个正整数 x 。
【输出格式】
输出一行包含一个整数表示答案。
【样例输入】
7
【样例输出】
5
【样例说明】
给定的串的前 7 位为 0110111 。
【评测用例规模与约定】
对于 60% 的评测用例,x ≤ 106 ;
对于所有评测用例,1 ≤ x ≤ 1018 。
试题 F: 01 串
11第十六届蓝桥杯大赛软件赛省赛Java研究生组
试题 G: 甘蔗
时间限制: 3.0s
内存限制: 512.0MB
本题总分: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 。
【样例输入 1】
6 3
6 7 3 4 9 12
2 3 5
【样例输出 1】
2
【样例说明 1】
其中一种方案:将 a2 砍为 3 ,再将 a3 砍为 1 。
试题G: 甘蔗
12第十六届蓝桥杯大赛软件赛省赛 Java 研究生组
【样例输入 2】
2 1
4 5
6
【样例输出 2】
-1
【评测用例规模与约定】
对于 40% 的评测用例,1 ≤ n, m ≤ 8 ;
对于所有评测用例,1 ≤ n, m ≤ 500 ,1 ≤ ai ≤ 1000 ,0 ≤ bi ≤ 1000 。
试题 G: 甘蔗
13第十六届蓝桥杯大赛软件赛省赛Java研究生组
试题 H: 原料采购
时间限制: 3.0s
内存限制: 512.0MB
本题总分:20 分
【问题描述】
小蓝负责一家工厂的原料采购。
工厂有一辆运货卡车,其容量为 m 。
工厂附近的采购点都在同一条路的同一方向上,一共有 n 个,每个采购点
和工厂的距离各不相同。其中,第 i 个采购点的价格为 ai ,库存为 bi ,距离为
ci 。
卡车每行驶一单位长度的路径就需要额外花费 o 。(返程没有花费,你也可
以认为 o 实际是行驶两单位长度的花费)
请计算将卡车装满最少需要花费多少钱,如果没有任何方案可以装满请输
出 −1 。
【输入格式】
输入的第一行包含三个正整数 n, m, o ,相邻整数之间使用一个空格分隔。
接下来 n 行,每行包含三个正整数 ai , bi , ci 表示一个采购点,相邻整数之间
使用一个空格分隔。
【输出格式】
输出一行包含一个整数表示答案,即装满卡车所需的最小花费。
【样例输入】
3 5 1
99 9 1
3 4 99
1 2 190
试题H: 原料采购
14第十六届蓝桥杯大赛软件赛省赛 Java 研究生组
【样例输出】
201
【评测用例规模与约定】
对于 40% 的评测用例,n ≤ 5000 ,m ≤ 50000 ;
对于 60% 的评测用例,m ≤ 105 ;
对于所有评测用例,1 ≤ n ≤ 105 ,1 ≤ m, o ≤ 109 ,1 ≤ ai , bi , ci ≤ 109 ,保
证对于 i > 1 ,一定有 ci−1 < ci 。
试题 H: 原料采购
15
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐