2024第十五届蓝桥杯 JAVA B组

目录

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

前言:

没参加这次蓝桥杯算法赛,十四届蓝桥杯被狂虐,对算法又爱又恨,爱我会做的题,痛恨我连题都读不懂的题😭,十四届填空只做对一个,今天闲的蛋疼想看看这次比赛能做对几个。

暂时没找到题目,这是网上找的简略版,看了看就知道蓝桥杯前几道题就喜欢考数学思维和十四届一样

试题 A: 报数游戏

在这里插入图片描述

(简洁版) 从小到大排列是20或24倍数的正整数,前10个数依次是:”20 24 40 48 60 72 80 96 100 120“,求第202420242024个数是多少?(填空题)

解题思路:

最开始想的是求求它俩的最小公倍数是120发现没啥用,然后再发现24比20多4,也就是24向前叠加5次就整整多出来一个20,然后再在纸上画画发现了每10次一循环:

在这里插入图片描述

可以看出第10个数是24 * 5,第20个数是24 * 10,那么202420242024可以分成202420242020 + 4,最后发现偶数4也是24结尾,那么答案就是202420242024 / 2 * 24
在这里插入图片描述


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

在这里插入图片描述

(个人理解:) 将一个n位的数字按一定的规则排成一个数列。
规则:
这个数列的起始部分分别为该数字每一位上的数。例如:数字(12345)排成数列是【1,2,3,4,5】。
这个数列的其它部分分别为从当前数列的最后一位起,前n项的和。例如数字(12345,共5位)排成数列【1,2,3,4,5,(?),…】,此时数列的第6个数就是从当前数列的最后一位起前5项的和,即(1+2+3+4+5=15)【1,2,3,4,5,15】;第7个数就是从当前数列的最后一位起前5项的和,即(2+3+4+5+15=29)【1,2,3,4,5,15,29】;…
如果这个数列中包含这个数字本身,那么这个数就是类斐波那契循环数。
求从0~10^7范围中最大的类斐波那契循环数。(填空题)

解题思路:

仔细做了做例子发现:
在这里插入图片描述
发现有点像滑动窗口,求新数后窗口移动一下,所以想着将整个过程放在一个数组里,但是这样一整每次数组的长度都是不定的,不好定义数组的长度,且求到新数后,数组前面的区域就没用了,所以就想着能否用一个定长数组来做滑动窗口,且所有区域都用的上

分析一下上面例子求出新数15后第一个数1就对求下一个数29来说没用了,为什么不把15放在1的位置,以此类推29放在2的位置

在这里插入图片描述
这样就好整了,数组大小就等于数字的位数,还需要一个K指针在整个数组中循环移动用%Length就解决了

说实话这个灵感来源于我嵌入式对页面切换的处理…

最后看是怎么停止了,题目说了这个数列中包含这个数本身那么这个数就是类斐波那契循环数,因为每次求得得新数都是递增的,所以如果新数都大于原始数的话,那么说明这个数不是类斐波那契循环数

既然求类斐波那契循环数的整个逻辑模式都搞明白了,剩下就是用代码实现上述的功能需求了:

import java.util.*;public class Main {static int END = 10000000;public static void main(String[] args) {int MaxNumber = 0;for(int i = 1; i <= END; i ++) {  // 由1开始int Length = GetNumnberLength(i);int Array[] = new int[Length];NumbertoArray(Array, i);int k = 0;while(true) {Array[k] = ListNumberSum(Array);if(Array[k] == i || Array[k] > i) break;  // 要么是类斐波那契循环数要么不是k = (k + 1) % Length;}if(Array[k] == i) {  // 是的话更新MaxNumberif(MaxNumber <= i) {MaxNumber = i;}}}System.out.println(MaxNumber);}public static int GetNumnberLength(int number) {int len = 0;while(number > 0) {len ++;number = number / 10;}return len;}public static void NumbertoArray(int array[], int number) {for(int i = array.length - 1; i >= 0; i --) {array[i] = number % 10;number = number / 10;}}public static int ListNumberSum(int array[]) {int sum = 0;for(int i = 0; i < array.length; i ++) sum = sum + array[i];return sum;}
}

其中while循环应该也循环不了几百次,整个时间复杂度应该等于10^7 * while循环次数,超过不了10^9复杂度,计算机一两秒就算出来了。

答案:在这里插入图片描述


以下试题全靠自己想法去做,可能有漏洞:

试题C:分布式队列

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解题思路:

先做例题,可以看出每个结点都可以当作一个独立的数组,在执行操作命令的时候对对应数组进行操作,add就是对主结点做添加操作,sync就是对对应副结点做操作,query就是输出情况

那么好怎么将具体的例子解法抽象成一般问题的解决逻辑呢,并且这个逻辑能较好用编程去实现?

首先分析到这个题有点像木桶的短板效应,即输出只需要关注最少元素的那个副结点即可,且主结点内装具体什么元素好像都不重要,重要的是装了几个元素

这样以来变成就简化成了一维数组,每个数组下标对应相应结点,数组对应值为同步的数的数量,只需关注最小的那个结点即可

代码:

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int Number = sc.nextInt();  // 输入String Temp = sc.nextLine();  // 吃空格int Array[] = new int [Number];while(sc.hasNext()){String Command = sc.nextLine();if(Command.charAt(0) == 'a') { Array[0] ++;  // add命令  }else if(Command.charAt(0) == 'q') {System.out.println(GetArrayMinNumber(Array));}else {String Split[] = Command.split("\\s+");int Index =  Integer.parseInt(Split[1]);if(Array[Index] < Array[0]) Array[Index] ++;  // 主节点还有多的元素才能同步}}}public static int GetArrayMinNumber(int array[]) {int MinOne = Integer.MAX_VALUE;for(int i = 0; i < array.length; i ++) {if(MinOne >= array[i]) MinOne = array[i];}return MinOne;}
}

注意:主节点没有多余的元素就不能同步给副结点了

例如:
2
sync 1
sync 1
add 11
add 22
query
输出为0而不是2

另外sc.hasNext是读到文件末尾会停,用while true停不下来

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/817692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在Linux系统部署Joplin笔记并结合内网穿透实现无公网IP远程访问

文章目录 1. 安装Docker2. 自建Joplin服务器3. 搭建Joplin Sever4. 安装cpolar内网穿透5. 创建远程连接的固定公网地址 Joplin 是一个开源的笔记工具&#xff0c;拥有 Windows/macOS/Linux/iOS/Android/Terminal 版本的客户端。多端同步功能是笔记工具最重要的功能&#xff0c;…

简单粗暴解决 wampapache 突然无法启动错误1053

问题是因为没有安装:vc_redist_x64 导致的 全网最简单粗暴解决下 DirectX_v4.1修复

芯来科技、IAR和MachineWare携手加速符合ASIL标准RISC-V汽车芯片创新

支持软件开发团队在虚拟硬件平台上进行固件和MCAL开发 芯来科技&#xff08;Nuclei&#xff09;、IAR和MachineWare紧密合作&#xff0c;加速RISC-V ASIL合规汽车解决方案的创新。此次合作简化了汽车电子的固件和MCAL开发&#xff0c;提供了虚拟和物理硬件平台之间的无缝集成。…

SQL单表查询(2)

对查询结果排序 ◆使用ORDER BY子句 – 可以按一个或多个属性列排序 – 升序&#xff1a;ASC&#xff1b;降序&#xff1a;DESC&#xff1b;缺省值为升序 ◆ 当排序列含空值时 – ASC&#xff1a;排序列为空值的元组最后显示 – DESC&#xff1a;排序列为空值的元组最先显…

护眼台灯哪个牌子好?护眼灯十大品牌推荐,绝对真香!

对于有孩子的家庭&#xff0c;特别是阅读爱好者&#xff0c;晚上阅读时的光线问题至关重要。昏暗环境长时间阅读&#xff0c;会严重伤害孩子的眼睛。因此&#xff0c;选择一款合适的护眼台灯显得尤为重要。但市场上品牌众多&#xff0c;护眼台灯哪个牌子好?这往往让人难以抉择…

Linux 5.10 Pstore 学习之(二) 原理学习

目录 编译框架模块初始化pstore子系统ramoops模块初始化实例化注册回调数据结构 pstore_blk模块pstore_zone模块 测试扩展调试 编译框架 目标结构 linux_5.10/fs/pstore/ ├── blk.c ├── ftrace.c ├── inode.c // 核心1 ├── internal.h ├── Kconfig ├── …

(四)C++自制植物大战僵尸游戏启动流程

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/ErelL 一、启动方式 鼠标左键单机VS2022上方工具栏中绿色三角按钮&#xff08;本地Windows调试器&#xff09;进行项目启动。第一次启动项目需要编译项目中所有代码文件&#xff0c;编译生成需要一定的时间。不同性能的电…

CentOS7使用Docker搭建Joplin Server并实现多端同步与公网使用本地笔记

文章目录 1. 安装Docker2. 自建Joplin服务器3. 搭建Joplin Sever4. 安装cpolar内网穿透5. 创建远程连接的固定公网地址 Joplin 是一个开源的笔记工具&#xff0c;拥有 Windows/macOS/Linux/iOS/Android/Terminal 版本的客户端。多端同步功能是笔记工具最重要的功能&#xff0c;…

基于springboot实现常州地方旅游管理系统项目【项目源码+论文说明】

基于springboot实现旅游管理系统演示 摘要 随着旅游业的迅速发展&#xff0c;传统的旅游信息查询方式&#xff0c;已经无法满足用户需求&#xff0c;因此&#xff0c;结合计算机技术的优势和普及&#xff0c;针对常州旅游&#xff0c;特开发了本基于Bootstrap的常州地方旅游管…

内存卡乱码?别担心,这里有你的数据恢复秘籍!

一、乱码困扰&#xff1a;内存卡数据成迷团 在数字化时代&#xff0c;内存卡作为我们存储数据的重要工具&#xff0c;承载着大量的照片、视频、文档等重要信息。然而&#xff0c;当有一天我们插上内存卡&#xff0c;发现原本井井有条的文件变成了乱码&#xff0c;那种焦虑和无…

5.Godot节点和功能及Node节点属性分析

1. 节点和功能的关系 节点 Node &#xff0c;用于实现一种功能&#xff0c;例如&#xff0c;Sprite 节点&#xff0c;用于图片的显示一个节点的功能取决于它挂载了哪些子节点&#xff0c;它包含了哪些功能的子节点&#xff0c;就包含了对应子节点表示的功能节点是可选的&#…

在个人电脑上,本地部署llama2-7b大模型

文章目录 前言原理效果实现 前言 我想也许很多人都想有一个本地的ai大语言模型,当然如果能够摆脱比如openai,goole,baidu设定的语言规则,可以打破交流界限,自由交谈隐私之类的,突破规则,同时因为部署在本地也不担心被其他人知道,那最好不过了 那究竟有没有这样的模型呢? llam…

怎么修改图片大小?在线图片处理的方法介绍

在日常生活中&#xff0c;我们经常需要调整图片大小以适应不同的网络上传要求。不管是微信、QQ换头像背景图片&#xff0c;还是各种社交媒体相册&#xff0c;都需要对图片改大小&#xff0c;今天就介绍几个关于修改图片大小的方法&#xff0c;可以不用下载安装就能在线图片处理…

WIFI详解及周边拓展

一、WiFi协议简介 WiFi协议&#xff0c;也称为无线保真技术&#xff0c;是一种允许电子设备通过无线方式在局域网&#xff08;WLAN&#xff09;和互联网上进行通信的技术标准。WiFi协议是基于IEEE 802标准的子系列标准协议&#xff0c;由电气和电子工程师协会制定。随着移动设备…

Docker篇(一)— Docker介绍

目录 什么是Docker应用部署的环境问题Docker解决依赖兼容问题Docker解决操作系统环境差异 小结 什么是Docker 微服务虽然具备各种各样的优势&#xff0c;但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中&#xff0c;依赖的组件非常多&#xff0c;不同组件之间部署时往…

Java多线程的线程状态和线程池参数

一、线程状态 当线程被创建并启动以后&#xff0c;它既不是一启动就进入了执行状态&#xff0c;也不是一直处于执行状态。线程对象在不同的时期有不同的状态。Java中的线程状态被定义在了java.lang.Thread.State枚举类中&#xff0c;State枚举类的源码如下&#xff1a; publi…

ZL-099动物行为学视频分析系统

简单介绍&#xff1a; 动物行为学视频分析系统是一套通过视频摄像机和计算机&#xff0c;采用图像处理技术&#xff0c;自动跟踪和记录动物活动的通用型运动轨迹记录分析系统&#xff0c;可以应用在神经药理&#xff0c;学习记忆药理&#xff0c;药理和新药神经系统一般药理毒理…

STM32SPI通信外设并读写W25Q64

文章目录 前言介绍SPI外设SPI框图简化框图 时序主模式全双工连续传输非连续传输 软硬件波形对比硬件SPI读写W25Q64接线图代码规划代码实现 前言 本文介绍STM32中自带的SPI外设&#xff0c;在大容量产品和互联型产品上&#xff0c;SPI接口可以配置为支持SPI协议或者支持I2S音频…

前端实现自动获取农历日期:探索JavaScript的跨文化编程

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

Verilog语法——按位取反“~“和位宽扩展的优先级

前言 先说结论&#xff0c;如下图所示&#xff0c;在Verilog中“~ ”按位取反的优先级是最高的&#xff0c;但是在等式计算时&#xff0c;有时候会遇到位宽扩展&#xff0c;此时需要注意的是位宽扩展的优先级高于“~”。 验证 仿真代码&#xff0c;下面代码验证的是“~”按位取…