2024年十五届蓝桥杯省赛大学B组真题(Java残缺版)

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
目前尚未有2024第十四届蓝桥杯软件C/C++大学B真题与题解发布,因为该事的时间线可能还未到达公布阶段[^1]。然而,可以基于以往的比形式和内容推测其考察的知识点范围以及提供一些常见的练习方向。 以下是关于如何准备此类比的一些指导: ### 准备指南 #### 一、熟悉基础算法 掌握基本的数据结构和经典算法对于参者至关重要。这包括但不限于数、链表、栈、队列等数据结构的应用;排序(快速排序、归并排序)、查找(二分法)、动态规划等问题解决方法的学习与实践。 ```cpp // 快速排序实现 (C++) void quickSort(int arr[], int low, int high){ if(low < high){ int pi = partition(arr,low,high); quickSort(arr, low, pi-1); quickSort(arr, pi+1, high); } } int partition (int arr[], int low, int high){ int pivot = arr[high]; int i = (low - 1); for (int j = low; j <= high- 1; j++){ if (arr[j] < pivot){ i++; swap(&arr[i], &arr[j]); } } swap(&arr[i + 1], &arr[high]); return (i + 1); } ``` ```java // 快速排序实现 (Java) public static void quickSort(int[] array, int start, int end) { if(start >= end) return; int pivotIndex = partition(array, start, end); quickSort(array, start, pivotIndex - 1); quickSort(array, pivotIndex + 1, end); } private static int partition(int[] array, int start, int end) { int pivotValue = array[end]; int index = start; for(int i=start;i<end;i++) { if(array[i]<pivotValue) { swap(array,i,index++); } } swap(array,end,index); return index; } ``` #### 二、深入理解编程语言特性 无论是使用C++还是Java参加竞,都需要深入了解所选语言的特点及其标准库的功能。例如,在C++中熟练运用STL容器类如vector、map等能够极大提高编码效率;而在Java里,则需熟知Collections框架下的各类集合类型及其实现原理。 #### 三、模拟实战训练 通过历试题进行反复演练是非常有效的备考方式之一。虽然现在无法获取到最新的2024具体题目,但是可以通过分析往的考题来预测可能出现的新颖考点,并针对性加强薄弱环节。 --- ###
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王老汉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值