第十五届蓝桥杯大赛软件赛省赛(Java 大学B组)

devtools/2024/12/23 2:05:24/

蓝桥杯 2024年省赛真题
Java 大学B组

  • 试题 A: 报数游戏
  • 试题 B: 类斐波那契循环数
  • 试题 C: 分布式队列


  在找工作,随便写写,安定下来再把去年国赛题解补上


试题 A: 报数游戏

本题总分: 5 5 5


【问题描述】

  小蓝和朋友们在玩一个报数游戏。由于今年是 2024 2024 2024 年,他们决定要
  从小到大轮流报出是 20 20 20 24 24 24 倍数的正整数。前 10 10 10 个被报出的数是 : : 20 , 24 , 40 , 48 , 60 , 72 , 80 , 96 , 100 , 120 20, 24, 40, 48, 60, 72, 80, 96, 100, 120 20,24,40,48,60,72,80,96,100,120。请问第 202420242024 202420242024 202420242024 个被报出的数是多少?

【答案提交】

  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。


2429042904288


由容斥原理可知,第 i \rm i i 个报出的数为 k \rm k k 时,它们的关系为 i = k / 20 + k / 24 − k / l c m ( 20 , 24 ) \rm i=k/20+k/24-k/lcm(20,24) i=k/20+k/24k/lcm(20,24) i = 12 k \rm i=12k i=12k


试题 B: 类斐波那契循环数

本题总分: 5 5 5


【问题描述】

  对于一个有 n n n 位的十进制数 N = d 1 d 2 d 3 ⋯ d n N = d_1d_2d_3\cdots d_n N=d1d2d3dn,可以生成一个类斐波那契数列 S S S,数列 S S S 的前 n n n 个数为 { S 1 = d 1 , S 2 = d 2 , S 3 = d 3 , ⋯ , S n = d n } \{S_1 = d1_, S_2 = d_2, S_3 = d_3, \cdots, S_n = d_n\} {S1=d1,S2=d2,S3=d3,,Sn=dn},数列 S S S 的第 k ( k > n ) k(k > n) k(k>n) 个数为 ∑ i = k − n k − 1 S i \sum^{k−1}_{i=k−n} S_i i=knk1Si。如果这个数 N N N 会出现在对应的类斐波那契数列 S S S 中,那么 N N N 就是一个类斐波那契循环数。
  例如对于 197 197 197,对应的数列 S S S { 1 , 9 , 7 , 17 , 33 , 57 , 107 , 197 , ⋯ } \{1, 9, 7, 17, 33, 57, 107, 197, \cdots \} {1,9,7,17,33,57,107,197,} 197 197 197 出现在 S S S 中,所以 197 197 197 是一个类斐波那契循环数。
  请问在 0 0 0 1 0 7 10^7 107 中,最大的类斐波那契循环数是多少?

【答案提交】

  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。


7913837


假定答案为 7 7 7 位数,从后往前 B F \rm BF BF 就行

java">public class Main {public static void main(String ...args) { new Main().run(); }void run() {int ans = 9999999, i, k;int[] buf = new int[100];for (;; --ans) {for (i = 7, k = ans, buf[8] = 0; i > 0; --i, k /= 10) {buf[8] += k % 10;buf[i] = k % 10;}for (i = 8; buf[i] < ans; ++i) buf[i + 1] = 2 * buf[i] - buf[i - 7];if (buf[i] == ans) break;}System.out.print(ans);}
}

试题 C: 分布式队列

时间限制: 3.0 s 3.0\mathrm s 3.0s 内存限制: 512.0 M B 512.0\mathrm{MB} 512.0MB 本题总分: 10 10 10


【问题描述】

  小蓝最近学习了一种神奇的队列:分布式队列。简单来说,分布式队列包含 N N N 个节点(编号为 0 0 0 N − 1 N − 1 N1,其中 0 0 0 号为主节点),其中只有一个主节点,其余为副节点。主/副节点中都各自维护着一个队列,当往分布式队列中添加元素时都是由主节点完成的(每次都会添加元素到队列尾部);副节点只负责同步主节点中的队列。可以认为主/副节点中的队列是一个长度无限的一维数组,下标为 0 , 1 , 2 , 3 ⋯ 0, 1, 2, 3 \cdots 0,1,2,3,同时副节点中的元素的同步顺序和主节点中的元素添加顺序保持一致。
  由于副本的同步速度各异,因此为了保障数据的一致性,元素添加到主节点后,需要同步到所有的副节点后,才具有可见性。
  给出一个分布式队列的运行状态,所有的操作都按输入顺序执行。你需要回答在某个时刻,队列中有多少个元素具有可见性。

【输入格式】

  第一行包含一个整数 N N N,表示节点个数。
  接下来包含多行输入,每一行包含一个操作,操作类型共有以下三种 : : a d d 、 s y n c add、sync addsync q u e r y query query,各自的输入格式如下 : :

   1. 1. 1. a d d e l e m e n t : add\ element: add element表示这是一个添加操作,将元素 e l e m e n t element element 添加到队列中;
   2. 2. 2. s y n c f o l l o w e r _ i d : sync\ follower\_id: sync follower_id表示这是一个同步操作, f o l l o w e r _ i d follower\_id follower_id 号副节点会从主节点中同步下一个自己缺失的元素;
   3. 3. 3. q u e r y : query: query查询操作,询问当前分布式队列中有多少个元素具有可见性。

【输出格式】

  对于每一个 q u e r y query query 操作,输出一行,包含一个整数表示答案。

【样例输入】

3
add 1
add 2
query
add 1
sync 1
sync 1
sync 2
query
sync 1
query
sync 2
sync 2
sync 1
query

【样例输出】

0
1
1
3

【样例说明】

  执行到第一个 q u e r y query query 时,队列内容如下 : : :
0 : [ 1 , 2 ] 0:[1,2] 0[1,2]
1 : [ ] 1:[] 1[]
2 : [ ] 2:[] 2[]
  两个副节点中都无元素,因此答案为 0 0 0
  执行到第二个 q u e r y query query 时,队列内容如下 : : :
0 : [ 1 , 2 , 1 ] 0:[1,2,1] 0[1,2,1]
1 : [ 1 , 2 ] 1:[1,2] 1[1,2]
2 : [ 1 ] 2:[1] 2[1]
  只有下标为 0 0 0 的元素被所有节点同步,因此答案为 1 1 1
  执行到第三个 q u e r y query query 时,队列内容如下 : : :
0 : [ 1 , 2 , 1 ] 0:[1,2,1] 0[1,2,1]
1 : [ 1 , 2 , 1 ] 1:[1,2,1] 1[1,2,1]
2 : [ 1 ] 2:[1] 2[1]
  只有下标为 0 0 0 的元素被所有节点同步,因此答案为 1 1 1
  执行到第四个 q u e r y query query 时,队列内容如下 : : :
0 : [ 1 , 2 , 1 ] 0:[1,2,1] 0[1,2,1]
1 : [ 1 , 2 , 1 ] 1:[1,2,1] 1[1,2,1]
2 : [ 1 , 2 , 1 ] 2:[1,2,1] 2[1,2,1]
  三个元素都被所有节点同步,因此答案为 3 3 3

【评测用例规模与约定】

  对于 30 % 30\% 30% 的评测用例 : : 1 ≤ 1 ≤ 1 输入的操作数 ≤ 100 ≤ 100 100
  对于 100 % 100\% 100% 的评测用例 : : 1 ≤ 1 ≤ 1 输入的操作数 ≤ 2000 ≤ 2000 2000 1 ≤ N ≤ 10 1 ≤ N ≤ 10 1N10 1 ≤ f o l l o w e r _ i d < N 1 ≤ f ollower\_id < N 1follower_id<N 0 ≤ e l e m e n t ≤ 1 0 5 0 ≤ element ≤ 10^5 0element105


感兴趣的可以去了解下能算在分布式队列一类的 K a f k a \rm Kafka Kafka 中的高水位机制,这里数据量太小,就随便弄两下

java">import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.io.PrintWriter;public class Main {public static void main(String ...args) throws IOException { new Main().run(); }StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));PrintWriter out = new PrintWriter(System.out);int[] LEO = new int[10];void run() throws IOException {in.nextToken();int N = (int) in.nval;while (in.nextToken() != StreamTokenizer.TT_EOF) {switch (in.sval) {case "add":in.nextToken();++LEO[0];break;case "sync":in.nextToken();int id = (int) in.nval;if (LEO[id] < LEO[0]) ++LEO[id];break;case "query":int HW = 2000;for (int i = 0; i < N; ++i)if (HW > LEO[i]) HW = LEO[i];out.println(HW);}}out.flush();}
}

还有看到一些小白问 while(in.hasNext()) 停不下来,可以通过 Ctrl+Z 的方式强制关闭 J a v a \rm Java Java 的输入流,也可以通过 Scanner(String source) 的方式构造输入工具,两种方法都可以辅助通过样例在本机完成初步测试


  蓝桥杯,弟中之弟,国一出来工作都找不到


http://www.ppmy.cn/devtools/2048.html

相关文章

【uniapp】 合成海报组件

之前公司的同事写过一个微信小程序用的 合成海报的组件 非常十分好用 最近的项目是uni的 把组件改造一下也可以用 记录一下 <template><view><canvas type"2d" class"_mycanvas" id"my-canvas" canvas-id"my-canvas" …

学习ArkTS -- 常用组件使用

学习ArkTS 使用Deveco studio写ArkTSImage: 图片显示组件1.声明Image组件并设置图片源2. 添加图片属性 Text: 文本显示组件1. 声明Text组件并设置文本内容2. 添加文本属性 TextInput&#xff1a;文本输入框1. 声明TextInput2. 添加属性和事件 Button 组件1. 声明Button组件&…

基于双向长短期神经网络LSTM的飞行轨迹预测,基于GRU神经网络的飞行轨迹预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 BILSTM神经网络 基于双向长短期神经网络LSTM的飞行轨迹预测,基于GRU神经网络的飞行轨迹预测 完整代码: 基于双向长短期神经网络LSTM的飞行轨迹预测,基于GRU神经网络的飞行轨迹预测资源-CSDN文库 https://download.csdn.net/do…

Java 自定義 List<T> 分頁工具

Java 自定義 List 分頁工具 PS: T可修改为对应的实体 rt com.google.common.collect.Lists;import java.util.Arrays; import java.util.Collections; import java.util.List;/*** ClassName: MyPageHelper* Descripution: List<T>分頁工具**/ public class MyPageHelp…

【数据结构】树

文章目录 一&#xff1a;树1.1 概念1.2 定义1.3 基本术语1.4 树的遍历1.5 存储结构1.5.1 双亲表示法1.5.2 孩子表示法1.5.3 孩子兄弟表示法 1.6 为什么需要树这种数据结构1.6.1 数组存储方式的分析1.6.2 链式存储方式的分析1.6.3 树存储方式的分析 二&#xff1a;二叉树2.1 定义…

K8S面试题学习

参考K8S面试题&#xff08;史上最全 持续更新&#xff09;_kubernetes常见面试题-CSDN博客做的个人总结&#xff0c;规划是每天看10题&#xff0c;thx&#xff01; 1.K8S是什么&#xff1f; 容器编排工具&#xff0c;主要用来管理容器化的一个应用&#xff0c;可以管理容器全…

深度解析:国内实时音视频厂商核心功能对比

当前实时音视频开发领域呈现出多样化竞争态势&#xff0c;其中声网&#xff08;Agora&#xff09;、即构&#xff08;ZEGO&#xff09;等云通讯企业占据了市场的主导地位。随着技术的持续进步和用户需求的日益多样化&#xff0c;选择音视频服务提供商的标准也越来越个性化&…

Java八股文4

Linux篇 1.free命令-查看内存状态 free命令用于显示内存状态&#xff0c;它可以提供关于系统内存使用情况的详细信息。这个命令会显示出内存的使用情况&#xff0c;包括实体内存、虚拟的交换文件内存、共享内存区段&#xff0c;以及系统核心使用的缓冲区等。 其中&#xff0c;参…