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