试题 A: 裁纸刀
本题总分:5 分
【问题描述】
小蓝有一个裁纸刀,每次可以将一张纸沿一条直线裁成两半。
小蓝用一张纸打印出两行三列共 6 个二维码,至少使用九次裁出来,下图
给出了一种裁法。
在上面的例子中,小蓝的打印机没办法打印到边缘,所以边缘至少要裁 4
次。另外,小蓝每次只能裁一张纸,不能重叠或者拼起来裁。
如果小蓝要用一张纸打印出 20 行 22 列共 440 个二维码,他至少需要裁多
少次?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
试题 A: 裁纸刀 2
第十三届蓝桥杯大赛软件赛省赛 Java 大学 A 组
试题 B: 寻找整数
本题总分:5 分
【问题描述】
有一个不超过 1017 的正整数 n,知道这个数除以 2 至 49 后的余数如下表
所示,求这个正整数最小是多少。
a n mod a a n mod a a n mod a a n mod a 2 1 14 11 26 23 38 37
3 2 15 14 27 20 39 23
4 1 16 9 28 25 40 9 5 4 17 0 29 16 41 1 6 5 18 11 30 29 42 11
7 4 19 18 31 27 43 11
8 1 20 9 32 25 44 33
9 2 21 11 33 11 45 29
10 9 22 11 34 17 46 15
11 0 23 15 35 4 47 5
12 5 24 17 36 29 48 41
13 10 25 9 37 22 49 46
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
试题 B: 寻找整数 3
第十三届蓝桥杯大赛软件赛省赛 Java 大学 A 组
试题 C: 求和
时间限制: 1.0s 内存限制: 512.0MB 本题总分:10 分
【问题描述】
给定 n 个整数 a1, a2, · · · , an ,求它们两两相乘再相加的和,即
S = a1 · a2 + a1 · a3 + · · · + a1 · an + a2 · a3 + · · · + an−2 · an−1 + an−2 · an + an−1 · an.
【输入格式】
输入的第一行包含一个整数 n 。
第二行包含 n 个整数 a1, a2, · · · an。
【输出格式】
输出一个整数 S,表示所求的和。请使用合适的数据类型进行运算。
【样例输入】
4
1 3 6 9
【样例输出】
117
【评测用例规模与约定】
对于 30% 的数据,1 ≤ n ≤ 1000,1 ≤ ai ≤ 100。
对于所有评测用例,1 ≤ n ≤ 200000,1 ≤ ai ≤ 1000。
试题 C: 求和 4
第十三届蓝桥杯大赛软件赛省赛 Java 大学 A 组
试题 D: GCD
时间限制: 1.0s 内存限制: 512.0MB 本题总分:10 分
【问题描述】
给定两个不同的正整数 a, b,求一个正整数 k 使得 gcd(a + k, b + k) 尽可能
大,其中 gcd(a, b) 表示 a 和 b 的最大公约数,如果存在多个 k,请输出所有满
足条件的 k 中最小的那个。
【输入格式】
输入一行包含两个正整数 a, b,用一个空格分隔。
【输出格式】
输出一行包含一个正整数 k。
【样例输入】
5 7
【样例输出】
1
【评测用例规模与约定】
对于 20% 的评测用例,a < b ≤ 105 ;
对于 40% 的评测用例,a < b ≤ 109 ;
对于所有评测用例,1 ≤ a < b ≤ 1018 。
试题 D: GCD 5
第十三届蓝桥杯大赛软件赛省赛Java大学A组
试题 E: 蜂巢
时间限制: 1.0s 内存限制: 512.0MB 本题总分:15 分
【问题描述】
蜂巢由大量的六边形拼接而成,定义蜂巢中的方向为:0 表示正西方向,1
表示西偏北 60◦,2 表示东偏北 60◦,3 表示正东,4 表示东偏南 60◦,5 表示西
偏南 60◦。
对于给定的一点 O,我们以 O 为原点定义坐标系,如果一个点 A 由 O 点
先向 d 方向走 p 步再向 (d + 2) mod 6 方向(d 的顺时针 120◦ 方向)走 q 步到
达,则这个点的坐标定义为 (d, p, q)。在蜂窝中,一个点的坐标可能有多种。
下图给出了点 B(0, 5, 3) 和点 C(2, 3, 2) 的示意。
给定点 (d1, p1, q1) 和点 (d2, p2, q2),请问他们之间最少走多少步可以到达?
【输入格式】
输入一行包含 6 个整数 d1, p1, q1, d2, p2, q2 表示两个点的坐标,相邻两个整
数之间使用一个空格分隔。
【输出格式】
输出一行包含一个整数表示两点之间最少走多少步可以到达。
【样例输入】
0 5 3 2 3 2
试题E: 蜂巢 6
第十三届蓝桥杯大赛软件赛省赛 Java 大学 A 组
【样例输出】
7
【评测用例规模与约定】
对于 25% 的评测用例,p1, p2 ≤ 103 ;
对于 50% 的评测用例,p1, p2 ≤ 105 ;
对于 75% 的评测用例,p1, p2 ≤ 107 ;
对于所有评测用例,0 ≤ d1, d2 ≤ 5,0 ≤ q1 < p1 ≤ 109,0 ≤ q2 < p2 ≤ 109 。
试题 E: 蜂巢 7
第十三届蓝桥杯大赛软件赛省赛 Java 大学 A 组
试题 F: 全排列的价值
时间限制: 1.0s 内存限制: 512.0MB 本题总分:15 分
【问题描述】
对于一个排列 A = (a1, a2, · · · , an),定义价值 ci 为 a1 至 ai−1 中小于 ai 的数
的个数,即 bi = |{aj| j < i, aj < ai}|。定义 A 的价值为 ∑ni=1 ci。
给定 n,求 1 至 n 的全排列中所有排列的价值之和。
【输入格式】
输入一行包含一个整数 n 。
【输出格式】
输出一行包含一个整数表示答案,由于所有排列的价值之和可能很大,请
输出这个数除以 998244353 的余数。
【样例输入 1】 3
【样例输出 1】 9
【样例输入 2】
2022
【样例输出 2】
593300958
【样例说明】
1 至 3 构成的所有排列的价值如下:
试题 F: 全排列的价值 8
第十三届蓝桥杯大赛软件赛省赛 Java 大学 A 组
(1, 2, 3) : 0 + 1 + 2 = 3 ;
(1, 3, 2) : 0 + 1 + 1 = 2 ;
(2, 1, 3) : 0 + 0 + 2 = 2 ;
(2, 3, 1) : 0 + 1 + 0 = 1 ;
(3, 1, 2) : 0 + 0 + 1 = 1 ;
(3, 2, 1) : 0 + 0 + 0 = 0 ;
故总和为 3 + 2 + 2 + 1 + 1 = 9。
【评测用例规模与约定】
对于 40% 的评测用例,n ≤ 20 ;
对于 70% 的评测用例,n ≤ 5000 ;
对于所有评测用例,2 ≤ n ≤ 106 。
试题 F: 全排列的价值 9
第十三届蓝桥杯大赛软件赛省赛Java大学A组
试题 G: 青蛙过河
时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分
【问题描述】
小青蛙住在一条河边,它想到河对岸的学校去学习。小青蛙打算经过河里
的石头跳到对岸。
河里的石头排成了一条直线,小青蛙每次跳跃必须落在一块石头或者岸上。
不过,每块石头有一个高度,每次小青蛙从一块石头起跳,这块石头的高度就
会下降 1,当石头的高度下降到 0 时小青蛙不能再跳到这块石头上(某次跳跃
后使石头高度下降到 0 是允许的)。
小青蛙一共需要去学校上 x 天课,所以它需要往返 2x 次。当小青蛙具有
一个跳跃能力 y 时,它能跳不超过 y 的距离。
请问小青蛙的跳跃能力至少是多少才能用这些石头上完 x 次课。
【输入格式】
输入的第一行包含两个整数 n, x,分别表示河的宽度和小青蛙需要去学校
的天数。请注意 2x 才是实际过河的次数。
第二行包含 n − 1 个非负整数 H1, H2, · · · , Hn−1,其中 Hi > 0 表示在河中与
小青蛙的家相距 i 的地方有一块高度为 Hi 的石头,Hi = 0 表示这个位置没有石
头。
【输出格式】
输出一行,包含一个整数,表示小青蛙需要的最低跳跃能力。
【样例输入】
5 1
1 0 1 0
试题G: 青蛙过河 10
第十三届蓝桥杯大赛软件赛省赛 Java 大学 A 组
【样例输出】
4
【样例解释】
由于只有两块高度为 1 的石头,所以往返只能各用一块。第 1 块石头和对
岸的距离为 4,如果小青蛙的跳跃能力为 3 则无法满足要求。所以小青蛙最少
需要 4 的跳跃能力。
【评测用例规模与约定】
对于 30% 的评测用例,n ≤ 100;
对于 60% 的评测用例,n ≤ 1000;
对于所有评测用例,1 ≤ n ≤ 105, 1 ≤ x ≤ 109, 1 ≤ Hi ≤ 104。
试题 G: 青蛙过河 11
第十三届蓝桥杯大赛软件赛省赛 Java 大学 A 组
试题 H: 因数平方和
时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分
【问题描述】
记 f(x) 为 x 的所有因数的平方的和。例如:f(12) = 12 + 22 + 32 + 42 + 62 +
122。
定义 g(n) = ∑ni=1 f(i) 。给定 n, 求 g(n) 除以 109 + 7 的余数。
【输入格式】
输入一行包含一个正整数 n。
【输出格式】
输出一个整数表示答案 g(n) 除以 109 + 7 的余数。
【样例输入】
100000
【样例输出】
394827960
【评测用例规模与约定】
对于 20% 的评测用例,n ≤ 105。
对于 30% 的评测用例,n ≤ 107。
对于所有评测用例,1 ≤ n ≤ 109。
试题 H: 因数平方和 12
第十三届蓝桥杯大赛软件赛省赛 Java 大学 A 组
试题 I: 最优清零方案
时间限制: 3.0s 内存限制: 512.0MB 本题总分:25 分
【问题描述】
给定一个长度为 N 的数列 A1, A2, · · · , AN。现在小蓝想通过若干次操作将
这个数列中每个数字清零。
每次操作小蓝可以选择以下两种之一:
- 选择一个大于 0 的整数,将它减去 1;
- 选择连续 K 个大于 0 的整数,将它们各减去 1。
小蓝最少经过几次操作可以将整个数列清零?
【输入格式】
输入第一行包含两个整数 N 和 K。
第二行包含 N 个整数 A1, A2, · · · , AN。
【输出格式】
输出一个整数表示答案。
【样例输入】
4 2
1 2 3 4
【样例输出】
6
【评测用例规模与约定】
对于 20% 的评测用例,1 ≤ K ≤ N ≤ 10。
试题 I: 最优清零方案 13
第十三届蓝桥杯大赛软件赛省赛 Java 大学 A 组
对于 40% 的评测用例,1 ≤ K ≤ N ≤ 100。
对于 50% 的评测用例,1 ≤ K ≤ N ≤ 1000。
对于 60% 的评测用例,1 ≤ K ≤ N ≤ 10000。
对于 70% 的评测用例,1 ≤ K ≤ N ≤ 100000。
对于所有评测用例,1 ≤ K ≤ N ≤ 1000000, 0 ≤ Ai ≤ 1000000。