第十三届蓝桥杯大赛软件赛省赛
Java
大学
C
组
第十三届蓝桥杯大赛软件赛省赛
Java
大学
C
组
【考生须知】
考试开始后,选手首先下载题目,并使用考场现场公布的解压密码解压试
题。
考试时间为
4
小时。考试期间选手可浏览自己已经提交的答案,被浏览的
答案允许拷贝。时间截止后,将无法继续提交或浏览答案。
对同一题目,选手可多次提交答案,以最后一次提交的答案为准。
选手必须通过浏览器方式提交自己的答案。选手在其它位置的作答或其它
方式提交的答案无效。
试题包含“结果填空”和“程序设计”两种题型。
结果填空题
:要求选手根据题目描述直接填写结果。求解方式不限。不要
求源代码。把结果填空的答案直接通过网页提交即可,不要书写多余的内容。
程序设计题
:要求选手设计的程序对于给定的输入能给出正确的输出结果。
考生的程序只有能运行出正确结果才有机会得分。
注意:在评卷时使用的输入数据与试卷中给出的示例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
所有源码必须在同一文件中。调试通过后,拷贝提交。
注意:
不要使用
package
语句
。
注意:选手代码的主类名必须为:
Main
,否则会被判为无效代码。
注意:如果程序中引用了类库,在提交时必须将
import
语句与程序的其
他部分同时提交。只允许使用
Java
自带的类库。
第十三届蓝桥杯大赛软件赛省赛
试题
A:
排列字母
本题总分:
5
分
【问题描述】
小蓝要把一个字符串中的字母按其在字母表中的顺序排列。
例如,
LANQIAO
排列后为
AAILNOQ
。
又如,
GOODGOODSTUDYDAYDAYUP
排列后为
AADDDDDGGOOOOPSTUUYYY
。
请问对于以下字符串,排列之后字符串是什么?
WHERETHEREISAWILLTHEREISAWAY
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个由大写字母组成的字符串,在提交答案时只填写这个字符串,填写多余的内
容将无法得分。
试题
B:
特殊时间
本题总分:
5
分
【问题描述】
2022
年
2
月
22
日
22:20
是一个很有意义的时间,年份为
2022
,由
3
个
2
和
1
个
0
组成,如果将月和日写成
4
位,为
0222
,也是由
3
个
2
和
1
个
0
组
成,如果将时间中的时和分写成
4
位,还是由
3
个
2
和
1
个
0
组成。
小蓝对这样的时间很感兴趣,他还找到了其它类似的例子,比如
111
年
10
月
11
日
01:11
,
2202
年
2
月
22
日
22:02
等等。
请问,总共有多少个时间是这种年份写成
4
位、月日写成
4
位、时间写成
4
位后由
3
个一种数字和
1
个另一种数字组成。注意
1111
年
11
月
11
日
11:11
不算,因为它里面没有两种数字。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
试题
C:
纸张尺寸
时间限制
: 1.0s
内存限制
: 512.0MB
本题总分:
10
分
【问题描述】
在
ISO
国际标准中定义了
A0
纸张的大小为
1189
mm
×
841
mm
,将
A0
纸
沿长边对折后为
A1
纸,大小为
841
mm
×
594
mm
,在对折的过程中长度直接取
下整(实际裁剪时可能有损耗)。将
A1
纸沿长边对折后为
A2
纸,依此类推。
输入纸张的名称,请输出纸张的大小。
【输入格式】
输入一行包含一个字符串表示纸张的名称,该名称一定是
A0
、
A1
、
A2
、
A3
、
A4
、
A5
、
A6
、
A7
、
A8
、
A9
之一。
【输出格式】
输出两行,每行包含一个整数,依次表示长边和短边的长度。
【样例输入
1
】
A0
【样例输出
1
】
1189
841
【样例输入
2
】
A1
【样例输出
2
】
841
594
试题
D:
求和
时间限制
: 1.0s
内存限制
: 512.0MB
本题总分:
10
分
【问题描述】
给定
n
个整数
a
1
,
a
2
,
· · ·
,
a
n
,求它们两两相乘再相加的和,即
S
=
a
1
·
a
2
+
a
1
·
a
3
+
· · ·
+
a
1
·
a
n
+
a
2
·
a
3
+
· · ·
+
a
n
−
2
·
a
n
−
1
+
a
n
−
2
·
a
n
+
a
n
−
1
·
a
n
.
【输入格式】
输入的第一行包含一个整数
n
。
第二行包含
n
个整数
a
1
,
a
2
,
· · ·
a
n
。
【输出格式】
输出一个整数
S
,表示所求的和。请使用合适的数据类型进行运算。
【样例输入】
4
1 3 6 9
【样例输出】
117
【评测用例规模与约定】
对于
30
%
的数据,
1
≤
n
≤
1000
,
1
≤
a
i
≤
100
。
对于所有评测用例,
1
≤
n
≤
200000
,
1
≤
a
i
≤
1000
。
试题
E:
矩形拼接
时间限制
: 1.0s
内存限制
: 512.0MB
本题总分:
15
分
【问题描述】
已知
3
个矩形的大小依次是
a
1
×
b
1
,
a
2
×
b
2
和
a
3
×
b
3
。用这
3
个矩形能拼
出的所有多边形中,边数最少可以是多少?
例如用
3
×
2
的矩形(用
A
表示)、
4
×
1
的矩形(用
B
表示)和
2
×
4
的矩
形(用
C
表示)可以拼出如下
4
边形。
例如用
3
×
2
的矩形(用
A
表示)、
3
×
1
的矩形(用
B
表示)和
1
×
1
的矩
形(用
C
表示)可以拼出如下
6
边形。
【输入格式】
输入包含多组数据。
第一行包含一个整数
T
,代表数据组数。
以下
T
行,每行包含
6
个整数
a
1
,
b
1
,
a
2
,
b
2
,
a
3
,
b
3
,其中
a
1
,
b
1
是第一个矩
形的边长,
a
2
,
b
2
是第二个矩形的边长,
a
3
,
b
3
是第三个矩形的边长。
【输出格式】
对于每组数据,输出一个整数代表答案。
【样例输入】
2
2 3 4 1 2 4
1 2 3 4 5 6
【样例输出】
4
8
【评测用例规模与约定】
对于
10
%
的评测用例,
1
≤
T
≤
5
,
1
≤
a
1
,
b
1
,
a
2
,
b
2
,
a
3
,
b
3
≤
10
,
a
1
=
a
2
=
a
3
。
对于
30
%
的评测用例,
1
≤
T
≤
5
,
1
≤
a
1
,
b
1
,
a
2
,
b
2
,
a
3
,
b
3
≤
10
。
对于
60
%
的评测用例,
1
≤
T
≤
10
,
1
≤
a
1
,
b
1
,
a
2
,
b
2
,
a
3
,
b
3
≤
20
。
对于所有评测用例,
1
≤
T
≤
1000
,
1
≤
a
1
,
b
1
,
a
2
,
b
2
,
a
3
,
b
3
≤
100
。
试题
F:
选数异或
时间限制
: 1.0s
内存限制
: 512.0MB
本题总分:
15
分
【问题描述】
给定一个长度为
n
的数列
A
1
,
A
2
,
· · ·
,
A
n
和一个非负整数
x
,给定
m
次查
询
,
每次询问能否从某个区间
[
l
,
r
]
中选择两个数使得他们的异或等于
x
。
【输入格式】
输入的第一行包含三个整数
n
,
m
,
x
。
第二行包含
n
个整数
A
1
,
A
2
,
· · ·
,
A
n
。
接下来
m
行,每行包含两个整数
l
i
,
r
i
表示询问区间
[
l
i
,
r
i
]
。
【输出格式】
对于每个询问
,
如果该区间内存在两个数的异或为
x
则输出
yes
,
否则输出
no
。
【样例输入】
4 4 1
1 2 3 4
1 4
1 2
2 3
3 3
【样例输出】
yes
no
yes
no
【样例说明】
显然整个数列中只有
2
,
3
的异或为
1
。
【评测用例规模与约定】
对于
20
%
的评测用例,
1
≤
n
,
m
≤
100
;
对于
40
%
的评测用例,
1
≤
n
,
m
≤
1000
;
对于所有评测用例,
1
≤
n
,
m
≤
100000
,
0
≤
x
<
2
20
,
1
≤
l
i
≤
r
i
≤
n
,
0
≤
A
i
<
2
20
。
试题
G: GCD
时间限制
: 1.0s
内存限制
: 512.0MB
本题总分:
20
分
【问题描述】
给定两个不同的正整数
a
,
b
,求一个正整数
k
使得
gcd
(
a
+
k
,
b
+
k
)
尽可能
大,其中
gcd
(
a
,
b
)
表示
a
和
b
的最大公约数,如果存在多个
k
,请输出所有满
足条件的
k
中最小的那个。
【输入格式】
输入一行包含两个正整数
a
,
b
,用一个空格分隔。
【输出格式】
输出一行包含一个正整数
k
。
【样例输入】
5 7
【样例输出】
1
【评测用例规模与约定】
对于
20
%
的评测用例,
a
<
b
≤
10
5
;
对于
40
%
的评测用例,
a
<
b
≤
10
9
;
对于所有评测用例,
1
≤
a
<
b
≤
10
18
。
试题
H:
青蛙过河
时间限制
: 1.0s
内存限制
: 512.0MB
本题总分:
20
分
【问题描述】
小青蛙住在一条河边,它想到河对岸的学校去学习。小青蛙打算经过河里
的石头跳到对岸。
河里的石头排成了一条直线,小青蛙每次跳跃必须落在一块石头或者岸上。
不过,每块石头有一个高度,每次小青蛙从一块石头起跳,这块石头的高度就
会下降
1
,当石头的高度下降到
0
时小青蛙不能再跳到这块石头上(某次跳跃
后使石头高度下降到
0
是允许的)。
小青蛙一共需要去学校上
x
天课,所以它需要往返
2
x
次。当小青蛙具有
一个跳跃能力
y
时,它能跳不超过
y
的距离。
请问小青蛙的跳跃能力至少是多少才能用这些石头上完
x
次课。
【输入格式】
输入的第一行包含两个整数
n
,
x
,分别表示河的宽度和小青蛙需要去学校
的天数。请注意
2
x
才是实际过河的次数。
第二行包含
n
−
1
个非负整数
H
1
,
H
2
,
· · ·
,
H
n
−
1
,其中
H
i
>
0
表示在河中与
小青蛙的家相距
i
的地方有一块高度为
H
i
的石头,
H
i
= 0
表示这个位置没有石
头。
【输出格式】
输出一行,包含一个整数,表示小青蛙需要的最低跳跃能力。
【样例输入】
5 1
1 0 1 0
【样例输出】
4
【样例解释】
由于只有两块高度为
1
的石头,所以往返只能各用一块。第
1
块石头和对
岸的距离为
4
,如果小青蛙的跳跃能力为
3
则无法满足要求。所以小青蛙最少
需要
4
的跳跃能力。
【评测用例规模与约定】
对于
30
%
的评测用例,
n
≤
100
;
对于
60
%
的评测用例,
n
≤
1000
;
对于所有评测用例,
1
≤
n
≤
10
5
,
1
≤
x
≤
10
9
,
1
≤
H
i
≤
10
4
。
试题
I:
因数平方和
时间限制
: 1.0s
内存限制
: 512.0MB
本题总分:
25
分
【问题描述】
记
f
(
x
)
为
x
的所有因数的平方的和。例如:
f
(12) = 1
2
+ 2
2
+ 3
2
+ 4
2
+ 6
2
+
12
2
。
定义
g
(
n
) =
∑
n
i
=1
f
(
i
)
。给定
n
,
求
g
(
n
)
除以
10
9
+ 7
的余数。
【输入格式】
输入一行包含一个正整数
n
。
【输出格式】
输出一个整数表示答案
g
(
n
)
除以
10
9
+ 7
的余数。
【样例输入】
100000
【样例输出】
394827960
【评测用例规模与约定】
对于
20
%
的评测用例,
n
≤
10
5
。
对于
30
%
的评测用例,
n
≤
10
7
。
对于所有评测用例,
1
≤
n
≤
10
9
。
试题
J:
最长不下降子序列
时间限制
: 1.0s
内存限制
: 512.0MB
本题总分:
25
分
【问题描述】
给定一个长度为
N
的整数序列:
A
1
,
A
2
,
· · ·
,
A
N
。现在你有一次机会,将其
中连续的
K
个数修改成任意一个相同值。请你计算如何修改可以使修改后的数
列的最长不下降子序列最长,请输出这个最长的长度。
最长不下降子序列是指序列中的一个子序列,子序列中的每个数不小于在
它之前的数。
【输入格式】
输入第一行包含两个整数
N
和
K
。
第二行包含
N
个整数
A
1
,
A
2
,
· · ·
,
A
N
。
【输出格式】
输出一行包含一个整数表示答案。
【样例输入】
5 1
1 4 2 8 5
【样例输出】
4
【评测用例规模与约定】
对于
20
%
的评测用例,
1
≤
K
≤
N
≤
100
;
对于
30
%
的评测用例,
1
≤
K
≤
N
≤
1000
;
对于
50
%
的评测用例,
1
≤
K
≤
N
≤
10000
;
对于所有评测用例,
1
≤
K
≤
N
≤
10
5
,
1
≤
A
i
≤
10
6
。