第十三届蓝桥杯省赛真题 Java C 组【原卷】

文章目录

  • 发现宝藏
  • 【考生须知】
  • [试题 A: 排列字母](#试题 A: 排列字母)
  • [试题 B: 特殊时间](#试题 B: 特殊时间)
  • [试题 C: 纸张尺寸](#试题 C: 纸张尺寸)
  • [试题 D: 求和](#试题 D: 求和)
  • [试题 E : \mathbf{E}: E: 矩形拼接](#试题 E : \mathbf{E}: E: 矩形拼接)
  • [试题 F: 选数异或](#试题 F: 选数异或)
  • [试题 G: GCD](#试题 G: GCD)
  • [试题 H: 青蛙过河](#试题 H: 青蛙过河)
  • [试题 I: 因数平方和](#试题 I: 因数平方和)
  • [试题 J \mathrm{J} J : 最长不下降子序列](#试题 J \mathrm{J} J : 最长不下降子序列)

发现宝藏

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。


第十三届蓝桥杯大赛软件赛省赛 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}A0\end{array} A0

【样例输出 1】

1189 \begin{array}{llll}1189\end{array} 1189

841 \begin{array}{llll}841\end{array} 841

【样例输入 2】

A 1 \begin{array}{llll}A1\end{array} A1

【样例输出 2】

841 \begin{array}{llll}841\end{array} 841

594 \begin{array}{llll}594\end{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}4\end{array} 4

1 3 6 9 \begin{array}{llll}1 & 3 & 6 & 9\end{array} 1369

【样例输出】

117 \begin{array}{llll}117\end{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}2\end{array} 2

2 3 4 1 2 4 \begin{array}{llllll}2 & 3 & 4 & 1 & 2 & 4\end{array} 234124

1 2 3 4 5 6 \begin{array}{lllllll}1 & 2 & 3 & 4 & 5 & 6\end{array} 123456

【样例输出】

4 \begin{array}{llllll} 4\end{array} 4

6 \begin{array}{llllll}6\end{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 & 1\end{array} 441

1 2 3 4 \begin{array}{llll}1 & 2 & 3 & 4\end{array} 1234

1 4 \begin{array}{llll}1 & 4\end{array} 14

1 2 \begin{array}{llll}1 & 2\end{array} 12

2 3 \begin{array}{llll}2 &3\end{array} 23

3 3 \begin{array}{llll}3 & 3\end{array} 33

【样例输出】

y e s \begin{array}{llll}yes\end{array} yes

n o \begin{array}{llll}no\end{array} no

y e s \begin{array}{llll}yes\end{array} yes

n o \begin{array}{llll}no\end{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&7\end{array} 57

【样例输出】

1 \begin{array}{llll}1\end{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&1\end{array} 51

1 0 1 0 \begin{array}{llll}1&0&1&0\end{array} 1010

【样例输出】

4 \begin{array}{llll}4\end{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}100000\end{array} 100000

【样例输出】

680584257 \begin{array}{llll}680584257\end{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 &1\end{array} 51

1 4 2 8 5 \begin{array}{lllll}1 & 4 & 2 & 8 & 5\end{array} 14285

【样例输出】

4 \begin{array}{lllll}4\end{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 。

相关推荐
BillKu19 分钟前
Java + Spring Boot + Mybatis 插入数据后,获取自增 id 的方法
java·tomcat·mybatis
全栈凯哥19 分钟前
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
java·算法·leetcode·链表
chxii20 分钟前
12.7Swing控件6 JList
java
全栈凯哥22 分钟前
Java详解LeetCode 热题 100(27):LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)详解
java·算法·leetcode·链表
YuTaoShao23 分钟前
Java八股文——集合「List篇」
java·开发语言·list
PypYCCcccCc28 分钟前
支付系统架构图
java·网络·金融·系统架构
华科云商xiao徐1 小时前
Java HttpClient实现简单网络爬虫
java·爬虫
扎瓦1 小时前
ThreadLocal 线程变量
java·后端
BillKu1 小时前
Java后端检查空条件查询
java·开发语言
jackson凌1 小时前
【Java学习笔记】String类(重点)
java·笔记·学习