2024年十五届蓝桥杯省赛大学B组真题(Java)
前言:
赛后一直犹豫要不要对比赛进行复盘出个题解,拖到了现在,终于也是等到比赛结果出来,看到没有辜负个人期望成功取得省一,决定在国赛前对省赛进行一个复盘,顺带查漏补缺,总体而言,这次JavaB组的省赛题偏基础,没有太多的算法,也是延续了暴力杯的头衔,这次对数学的考察居然比以往提高了不少,令我感到意外,题外话不多说,让我们一起来复盘一下第十五届的省赛题吧,同时也祝愿各位能取得一个不错的成绩。
(未完篇)
题单链接
试题A:报数游戏
本题总分:5 分
【问题描述】
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
答案:2429042904288
【解题思路】
该题数据量大,单纯靠电脑跑不太现实,那么其中肯定有数学规律在,通过计算可以得出 20 和 24 的最小公倍数是 120 ,再对符合条件的前四十个数进行输出,我们可以发现该规律是十次一循环,每次结尾都是 120 的倍数,那么我们可以求得第 202420242020 个数的值为 202420242020/10*120=2429042904240 ,再通过观察发现第四个数与上一个循环相差 48 ,把两个数值相加得到答案 2429042904288
【代码】
package SS2024b.baoshuyouxi;
public class Main {
public static void main(String[] args) {
long n = 202420242024L;
// long count = 0;
// for (long i = 1; count < 40; i++) {
// if (i * 4 % 20 == 0 || i * 4 % 24 == 0) {
// count++;
// System.out.println(i * 4);
// }
// }
long num1 = (n - 4) / 10 * 120;
long num2 = 48;
long num = num1 + num2;
System.out.println(num);
}
}
试题 B: 类斐波那契循环数
本题总分:5 分
【问题描述】
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
答案:7913837
【解题思路】
给出一个判断是否为类斐波那契循环数的判断式,该判断式类似于滚动窗口,固定取一个窗口大小,该大小为 n 的值,维护窗口内所有值的和 sum ,判断 sum 在小于等于 n 是是否存在相等的情况即可,从 1e7 开始一直递减遍历下去,遇到的第一个符合条件的数即为答案。
【代码】
package SS2024b.leifeibonaqixunhuan;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
int l = (int) 1e7;
while (l > 0) {
if (isLei(l)) {
System.out.println(l);
break;
}
l--;
}
}
static boolean isLei(int n) {
boolean flag = false;
int n1 = n;
ArrayList<Integer> ys = new ArrayList<Integer>();
while (n1 != 0) {
ys.add(n1 % 10);
n1 /= 10;
}
ArrayList<Integer> s = new ArrayList<Integer>();
s.add(0);
int sum = 0;
for (int i = ys.size() - 1; i >= 0; i--) {
s.add(ys.get(i));
sum += ys.get(i);
}
int index = 0;
while (sum <= n) {
if (index != 0) {
sum *= 2;
}
s.add(sum -= s.get(index++));
if (sum == n) {
flag = true;
break;
}
}
return flag;
}
}
试题 C: 分布式队列
时间限制: 3.0s 内存限制: 512.0MB 本题总分:10 分
【问题描述】
【输入格式】
【输出格式】
对于每一个 query 操作,输出一行,包含一个整数表示答案。
【样例输入】
3
a