蓝桥杯2024JavaB组的一道真题的解析
文章目录
- 1.问题描述
- 2.问题描述
- 3.思路分析
- 4.代码分析
1.问题描述
这个是我很久之前写的一个题目,当时研究了这个题目好久,发布了一篇题解,后来很多人点赞,我都没有意识到这个问题的严重性,我甚至都在怀疑自己:我写的题解这么优秀吗?
临近蓝桥杯,最近也是在研究这个蓝桥杯的真题嘛,这个题目实际上就是真题,但是当时我并不知道,现在回头去看这个去年的11月份我写下来的对应的题解,也让我想了好久,才发现了这个规律,所以今天记录下来

下面的这个是大家的评论,这个方法绝对是很巧妙的,但是不容易想到,我也忘记了自己当时是怎么想到的:

2.问题描述
上面的这个图片里面已经把这个题目的问题描述的很清楚了,我觉得,实际上,下面的这个数列的结果基本上就是后面的一项等于前面的三项的和;
前面的几个数据其实就是我们的这个数的每一个数位上面的数字,例如这个197,他的每一个数位上面的数据组成了我们的下面的数列里面的前面的三个数据;
17就是前面的三个数字的求和,33就是他前面的三个数字的求和以此类推下去,发现找到了这个197,因此这个197就是一个类斐波那契数;
他需要我们求接的就是这个0-10000000里面的这个最大的斐波那契数;

3.思路分析
因为这个在去年的蓝桥杯的省赛里面是一个填空题,相较于这个编程题,其实这类题目是容易拿分的,我觉得,但是这个题目因为给定的这个数据范围比较大吗,所以这个其实如果我当时在考场上面,可能做不出来这个题目;
下面说一下我的这个思路,每一项是前面的几个项求和,这个规律很好找,但是如果要是真正的无脑进行计算,这个其实计算量是蛮大的,因此不妨看一下我下面的这个思路:
使用这个197作为例子把,实际上我们规定一个数组:
初始情况下这个数组里面的元素就是:[1,9,7];
这个时候我们计算一下前面的几个数据的求和,加入到数组里面去:[1,9,7,17];
接下来就是去掉数组里面的第一个数据,最后一个数据*2减去第一个新的数据:
1)首先去掉数组里面的第一个数据就是1,9,7,17
2)乘上二减去第一个元素就是17*2-1=33,这个元素就是我们的新的元素;
3)去掉第一个元素,更新之后的这个数组就是[9,7,17,33];
4)乘上2减去第一个新的元素:33乘上2=66,减去第一个新元素9=57,和上面的例子是一样的;
5)这个时候的数组就是9,7,17,33,57,去掉第一个元素就是7,17,33,57;
6)57*2-7==107符合上面的这个情况;
7)综上所述,大家是可以发现,这个实际上就是乘上2减去数组里面的第一个元素,这个数值添加到我们的数组里面去,然后就是去掉数组里面的第一个元素,以此类推,一直进行下去;
8)这个方法不能说非常的高明,但是比这一项等于前面的三项的数据求和的这个方法更好一些把,我觉得更容易实现一些;
4.代码分析
1)下面的这个就是我当时发布题解的时候的代码,里面是有一部分注释的,但是可能杰士德不是很清楚,因此我再次说明一下
2)首先需要关注的就是这个里面的main方法,确定这个筛选的范围,pd就是我们的自定义的方法,返回值是布尔值,如果是真的,这个时候就会被打印输出,假的的话an=0保持初始数值;
3)pd方法里面,首先是对于这个传进来的参数进行拆解,分成不同的数位上面的数据;
4)anss就是把拆解之后的每一个数位上面的数据求和,添加到我们的这个数组里面去;
5)*2-ans.get(0)就是上面的这个思路分析里面的乘上2减去这个数组里面的第一个元素,粑粑这个数据添加到我们的数组里面去
6)remove方法把我们的数组里面的第一个数据溢移除,和上面的这个思路里面的做法是一致的;
7)其实这个先添加还是先删除的这个顺序是没有影响的;
8)因为这个是一个循环吗,所以如果可以找到,就会跳出来,超过了这个i这个数值还是没有找到,说明这个数据就是不符合条件的,我们也会从这个循环里面跳出来;
import java.util.ArrayList;
import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);long an=0;for(int i=197;i<1e7;i++){if(pd(i)){an=i;}}System.out.println(an);}private static boolean pd(int i){ArrayList<Integer> ans = new ArrayList<>();String s=""+i;int anss=0;//转换为这个string方便获取每一个数位上面的证书for(int j=0;j<s.length();j++){//下面的这个ans就是我们的列表容器ans.add(s.charAt(j)-'0');anss=anss+s.charAt(j)-'0';}//上面的这个循环究竟是在干什么事情:下面的这个以1234为例子说明,方便理解//列表 ans 存储了整数 1234 的各个数位数字 [1, 2, 3, 4],// 变量 anss 的值为 10,即整数 1234 各个数位数字的总和。ans.add(anss);//这个时候i的数组元素就是ans[1,2,3,4,10]while(true){//乘以2减去这个里面的第一个元素就是这个类斐波那契数列的规律,避免使用纯粹的数学方法计算anss=(anss*2)-ans.get(0);ans.remove(0);ans.add(anss);if(anss==i){return true;}else if(anss>i){return false;}}}
}
相关文章:
蓝桥杯2024JavaB组的一道真题的解析
文章目录 1.问题描述2.问题描述3.思路分析4.代码分析 1.问题描述 这个是我很久之前写的一个题目,当时研究了这个题目好久,发布了一篇题解,后来很多人点赞,我都没有意识到这个问题的严重性,我甚至都在怀疑自己…...
计算机视觉算法实战——基于YOLOv8的行人流量统计系统
✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ 引言:智能客流分析的市场需求 在零售、交通、安防等领域,准确的行人流量统计对于商业决策、公共安全管理…...
在PyTorch中使用GPU加速:从基础操作到模型部署
本文将通过具体代码示例,详细介绍如何在PyTorch中利用GPU进行张量计算和模型训练,包含设备查询、数据迁移以及模型部署等完整流程。 1. 查看GPU硬件信息 使用 nvidia-smi 命令检查GPU状态和进程信息: # 查看GPU信息 !nvidia-smi 输出示例&…...
机器学习ML极简指南
机器学习是现代AI的核心,从推荐系统到自动驾驶,无处不在。但每个智能应用背后,都离不开那些奠基性的模型。本文用最简练的方式拆解核心机器学习模型,助你面试时对答如流,稳如老G。 线性回归 线性回归试图通过"最…...
flux绘画模型介绍
一、Flux绘画模型的核心定义与背景 Flux绘画模型是由Black Forest Labs开发的先进AI图像生成模型,其核心团队源自Stable Diffusion的创始成员(如Robin Rombach),结合了Stability AI的技术积累与创新突破。该模型于2024年8月首次发…...
LLM驱动的智能体:基于GPT的对话智能体开发指南
前言 大语言模型(LLM, Large Language Model)正在彻底改变智能体(Agent)的设计和实现方式。从简单的聊天机器人到复杂的自动化助手,基于GPT等LLM的对话智能体已经在客服、教育、办公自动化、编程助手等领域得到了广泛…...
项目之Boost搜索引擎
目录 搜索引擎项目背景 搜索引擎的宏观原理 搜索引擎技术栈和项目环境 搜索引擎具体原理(正排索引和倒排索引) 正排索引 倒排索引 编写数据去标签与数据清洗的模块 Parser 从boost官网导入HTML网页数据 去标签 构建 Parser 模块 递归式获取 HTML 文件的带文件名称…...
MyBatis 动态SQL 详解!
目录 一、 什么是动态 SQL?二、 为什么需要动态 SQL?三、 MyBatis 动态 SQL 标签四、 标签详解及示例1、 if 标签2、 choose、when、otherwise 标签3、 where 标签4、 set 标签5、 foreach 标签6、 sql、include 标签 五、 总结 🌟我的其他文…...
本节课课堂总结
匿名子类: 说明 和 Java 一样,可以通过包含带有定义或重写的代码块的方式创建一个匿名的子类。 单例对象(伴生对象) Scala语言是完全面向对象的语言,所以并没有静态的操作(即在Scala中没有静态的概念&a…...
【Linux学习笔记】开发工具git和gbd和cgbd的介绍和使用
【Linux学习笔记】开发工具git和gbd和cgbd的介绍和使用 🔥个人主页:大白的编程日记 🔥专栏:Linux学习笔记 文章目录 【Linux学习笔记】开发工具git和gbd和cgbd的介绍和使用前言一. 版本控制器Git1.1版本控制器1.2 git 简史1.3 安…...
php的高速缓存
部署方法 在我们安装的nginx中默认不支持memc和srcache功能,需要借助第三方模块来让nginx支持此功能。 tar zxf srcache-nginx-module-0.33.tar.gz tar zxf memc-nginx-module-0.20.tar.gz 下载这俩个模块,然后编译安装的时候加进去 编译安装完成之后…...
Real-Time Anomaly Detection of Network Traffic Basedon CNN
1知识点补充 边缘计算模型 成为一种新的分布式数据处理方式,通过靠近数据侧,及时响应用户的计算请求,降低数据传输的网络延迟。 边缘节点是边缘计算架构中最基础的物理或逻辑单元,指位于网络边缘(靠近数据源或用户&a…...
RHCSA LINUX系统文件管理
一.7种文件类型 注意:Linux系统文件名的后缀只是为了方便用户识别文件类型 Linux系统设计哲学:一切皆文件 1.使用 “ls -l” 命令查看到的第一个字符,对应不同文件类型及说明如下: ①“-”:普通文件,类…...
AQUA爱克泳池设备入驻济南校园,以品质筑牢游泳教育安全防线
在推进校园体育教育高质量发展的时代背景下,游泳作为一项兼具运动价值与生存技能的重要课程,正被越来越多的学校纳入教学体系。泳池作为开展游泳教学与运动的关键设施,其配套泳池设备的先进性与安全性愈发受到重视。作为泳池水处理设备行业的…...
基于CNN实现电力负荷多变量时序预测(PyTorch版)
前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对抗网络、门控循环单元、长短期记…...
网络空间安全(50)JavaScript基础语法
一、变量声明 ①var: 早期的变量声明方式,函数作用域。 ②let: 块级作用域,推荐在现代 JavaScript 中使用。 ③const: 块级作用域,用于声明常量,值不可变。 var name "Alice"; let age 30; const PI 3.14159; 二、数…...
深入理解二叉树、B树与B+树:原理、应用与实现
文章目录 引言一、二叉树:基础而强大的结构基本概念特性分析Java实现应用场景 二、B树:适合外存的多路平衡树基本概念关键特性查询流程示例Java简化实现典型应用 三、B树:数据库索引的首选核心改进优势分析范围查询示例Java简化实现实际应用 …...
【网络流 图论建模 最大权闭合子图】 [六省联考 2017] 寿司餐厅
题目描述: P3749 [六省联考 2017] 寿司餐厅 题目描述 Kiana 最近喜欢到一家非常美味的寿司餐厅用餐。 每天晚上,这家餐厅都会按顺序提供 n n n 种寿司,第 i i i 种寿司有一个代号 a i a_i ai 和美味度 d i , i d_{i, i} di,i&…...
mysql对表,数据,索引的操作sql
对表的操作 新建表 创建一个名为rwh_test的表,id为主键自增 -- 新建表 CREATE TABLE rwh_test(id int NOT NULL auto_increment PRIMARY KEY COMMENT 主键id,username VARCHAR(20) DEFAULT NULL COMMENT 用户名,age int DEFAULT NULL COMMENT 年龄,create_date d…...
verl单机多卡与多机多卡使用经验总结
文章目录 I. 前言II. SFT2.1 单机多卡2.2 多机多卡 III. RL (GRPO)3.1 单机多卡3.2 多机多卡2.3 模型转换 I. 前言 在上一篇文章verl:一个集SFT与RL于一体的灵活大模型post-training框架 (快速入门) 中,初步探讨了verl框架的基础使用方法。在实际工业级…...
胶铁一体化产品介绍
•一体化结构特点介绍 胶框/铁框一体化技术最早在韩国采用,07年以来由于要求背光越做越薄。在采用0.4mm及以下厚度的LGP时,胶框及背光就会变得异常软,胶框不易组装,铁框松动等问题。 由于胶框和铁框是紧紧粘合在一起的,这正可以解…...
蓝桥杯刷题记录【并查集001】(2024)
主要内容:并查集 并查集 并查集的题目感觉大部分都是模板题,上板子!! class UnionFind:def __init__(self, n):self.pa list(range(n))self.size [1]*n self.cnt ndef find(self, x):if self.pa[x] ! x:self.pa[x] self.fi…...
基于BusyBox构建ISO镜像
1. 准备 CentOS 7.9 3.10.0-957.el7.x86_64VMware Workstation 建议:系统内核<3.10.0 使用busybox < 1.33.2版本 2. 安装busybox # 安装依赖 yum install syslinux xorriso kernel-devel kernel-headers glibc-static ncurses-devel -y# 下载 wget https://…...
Multisim14.3的安装步骤
Multisim14.3的安装步骤 安装包链接 右击Install.exe,以管理员身份运行 激活前关闭杀毒软件 右击,以管理员身份运行 依次右键【Base Edition】、【Full Edition】、【Power ProEdition】、【Full Edition】、【Power ProEdition】,选择【…...
搭建环境-opencv-qt
CMake Error at cmake/OpenCVCompilerOptimizations.cmake:647 (message): Compiler doesnt support baseline optimization flags: Call Stack (most recent call first): cmake/OpenCVCompilerOptions.cmake:344 (ocv_compiler_optimization_options) CMakeList 解决方…...
【愚公系列】《高效使用DeepSeek》050-外汇交易辅助
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...
SparkAudio 是什么,和其他的同类 TTS 模型相比有什么优势
欢迎来到涛涛聊AI 在当今数字化时代,音频处理技术已经成为人们生活和工作中不可或缺的一部分。无论是制作有声读物、开发语音助手,还是进行影视配音,我们都离不开高效、精准的音频处理工具。然而,传统的音频处理技术往往存在诸多…...
jvm 的attach 和agent机制
Java 的 Attach 和 Agent 机制在实际应用中得到了广泛的成功应用,尤其是在监控、调试、性能分析、故障排查等方面。以下是这两种机制在实际场景中的一些成功应用案例: 1. 性能监控与分析 Java Agent 和 Attach 机制广泛应用于性能监控和分析࿰…...
Java 8 到 Java 21 系列之 Optional 类型:优雅地处理空值(Java 8)
Java 8 到 Java 21 系列之 Optional 类型:优雅地处理空值(Java 8) 系列目录 Java8 到 Java21 系列之 Lambda 表达式:函数式编程的开端(Java 8)Java 8 到 Java 21 系列之 Stream API:数据处理的…...
py文件打包为exe可执行文件,涉及mysql连接失败
py文件打包为exe可执行文件,涉及mysql连接失败 项目场景:使用flask框架封装算法接口,并使用pyinstaller打包为exe文件。使用pyinstaller打包多文件的场景,需要自己手动去.spec文件中添加其他文件,推荐使用auto-py-to-e…...
