第十三届蓝桥杯省赛真题 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 。

相关推荐
ProtonBase18 分钟前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构
乐之者v24 分钟前
leetCode43.字符串相乘
java·数据结构·算法
suweijie7684 小时前
SpringCloudAlibaba | Sentinel从基础到进阶
java·大数据·sentinel
公贵买其鹿4 小时前
List深拷贝后,数据还是被串改
java
xlsw_8 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
神仙别闹8 小时前
基于java的改良版超级玛丽小游戏
java
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭9 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
暮湫9 小时前
泛型(2)
java
超爱吃士力架9 小时前
邀请逻辑
java·linux·后端
南宫生9 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论