藍橋杯2024JavaB組的一道真題的解析

文章目錄

  • 1.問題描述
  • 2.問題描述
  • 3.思路分析
  • 4.代碼分析

1.問題描述

這個是我很久之前寫的一個題目,當時研究了這個題目好久,發布了一篇題解,后來很多人點贊,我都沒有意識到這個問題的嚴重性,我甚至都在懷疑自己:我寫的題解這么優秀嗎?

臨近藍橋杯,最近也是在研究這個藍橋杯的真題嘛,這個題目實際上就是真題,但是當時我并不知道,現在回頭去看這個去年的11月份我寫下來的對應的題解,也讓我想了好久,才發現了這個規律,所以今天記錄下來

image-20250403205232762

下面的這個是大家的評論,這個方法絕對是很巧妙的,但是不容易想到,我也忘記了自己當時是怎么想到的:

image-20250403205918800

2.問題描述

上面的這個圖片里面已經把這個題目的問題描述的很清楚了,我覺得,實際上,下面的這個數列的結果基本上就是后面的一項等于前面的三項的和;

前面的幾個數據其實就是我們的這個數的每一個數位上面的數字,例如這個197,他的每一個數位上面的數據組成了我們的下面的數列里面的前面的三個數據;

17就是前面的三個數字的求和,33就是他前面的三個數字的求和以此類推下去,發現找到了這個197,因此這個197就是一個類斐波那契數;

他需要我們求接的就是這個0-10000000里面的這個最大的斐波那契數;

image-20250403210024095

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;}}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74388.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74388.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74388.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

性能比拼: Go標準庫 vs Python FastAPI(第二輪)

本內容是對知名性能評測博主 Anton Putra Python (FastAPI) vs Go (Golang) (Round 2) Performance Benchmark 內容的翻譯與整理, 有適當刪減, 相關指標和結論以原作為準 介紹 這是第二輪關于 FastAPI 和 Golang 的對比測試。我幾天前運行了前一次的基準測試&#xff0c;到目…

DeepSeek與ChatGPT的優勢對比:選擇合適的工具來提升工作效率

選DeepSeek還是ChatGPT&#xff1f;這就像問火鍋和披薩哪個香&#xff01; "到底該用DeepSeek還是ChatGPT?” 這個問題最近在互聯網圈吵翻天!其實這就跟選手機系統-樣&#xff0c;安卓黨iOS黨都能說出一萬條理由&#xff0c;但真正重要的是你拿它來干啥&#xff01;&am…

Python爬蟲第4節-請求庫urllib的request模塊使用

目錄 前言&#xff1a;基本庫urllib的使用 一、urlopen方法 二、Request類 三、高級用法 前言&#xff1a;基本庫urllib的使用 開始學習爬蟲時&#xff0c;第一步就是要模擬瀏覽器給服務器發送請求。這個時候&#xff0c;你可能會有很多問題&#xff1a;該從哪里開始做呢&a…

Vue3 Pinia Store使用示例

代碼示例&#xff1a; import { defineStore } from "pinia"; // 導入 Pinia 的 defineStore 方法 import { ref } from "vue"; // 導入 Vue 的響應式 API ref import { type Menu } from "/interface"; // 導入自定義的 Menu 類型/…

JavaScript逆向魔法:Chrome開發者工具探秘之旅

在前端開發和安全研究領域&#xff0c;JavaScript逆向工程是一項關鍵技能。它涉及分析和理解代碼的執行流程、數據結構和邏輯&#xff0c;以發現潛在的安全漏洞、提取核心算法或實現功能兼容。本文將結合Chrome開發者工具的調試功能&#xff0c;并通過具體示例幫助你更好地理解…

Qt基礎:資源文件

資源文件 1. 資源文件2. 資源文件創建 1. 資源文件 資源文件顧名思義就是一個存儲資源的文件&#xff0c;在Qt中引入資源文件好處在于他能提高應用程序的部署效率并且減少一些錯誤的發生。 在程序編譯過程中&#xff0c; 添加到資源文件中的文件也會以二進制的形式被打包到可執…

Agent TARS與Manus的正面競爭

Agent TARS 是 Manus 的直接競爭對手&#xff0c;兩者在 AI Agent 領域形成了顯著的技術與生態對抗。 一、技術架構與功能定位的競爭 集成化架構 vs 模塊化設計 Agent TARS 基于字節跳動的 UI-TARS 視覺語言模型&#xff0c;將視覺感知、推理、接地&#xff08;grounding&#…

使用ssh連接上開發板

最后我發現了問題&#xff0c;我忘記指定用戶名了&#xff0c;在mobaXterm上左上角打開會話&#xff0c;點擊ssh&#xff0c;然后輸入要連接的開發板主機的ip地址&#xff0c;關鍵在這里&#xff0c;要指定你要連接的開發板的系統中存在的用戶&#xff0c;因為通過ssh連接一個設…

【性能優化點滴】odygrd/quill在編譯期做了哪些優化

Quill 是一個高性能的 C 日志庫&#xff0c;它在編譯器層面進行了大量優化以確保極低的運行時開銷。以下是 Quill 在編譯器優化方面的關鍵技術和實現細節&#xff1a; 1. 編譯時字符串解析與格式校驗 Quill 在編譯時完成格式字符串的解析和校驗&#xff0c;避免運行時開銷&…

【數據結構】排序算法(中篇)·處理大數據的精妙

前引&#xff1a;在進入本篇文章之前&#xff0c;我們經常在使用某個應用時&#xff0c;會出現【商品名稱、最受歡迎、購買量】等等這些榜單&#xff0c;這里面就運用了我們的排序算法&#xff0c;作為剛學習數據結構的初學者&#xff0c;小編為各位完善了以下幾種排序算法&…

混雜模式(Promiscuous Mode)與 Trunk 端口的區別詳解

一、混雜模式&#xff08;Promiscuous Mode&#xff09; 1. 定義與工作原理 定義&#xff1a;混雜模式是網絡接口的一種工作模式&#xff0c;允許接口接收通過其物理鏈路的所有數據包&#xff0c;而不僅是目標地址為本機的數據包。工作層級&#xff1a;OSI 數據鏈路層&#x…

大學生機器人比賽實戰(一)綜述篇

大學生機器人比賽實戰 參加機器人比賽是大學生提升工程實踐能力的絕佳機會。本指南將全面介紹如何從零開始準備華北五省機器人大賽、ROBOCAN、RoboMaster等主流機器人賽事&#xff0c;涵蓋硬件設計、軟件開發、算法實現和團隊協作等關鍵知識。 一、比賽選擇與準備策略 1.1 主…

【Linux】動靜態庫知識大梳理

親愛的讀者朋友們&#x1f603;&#xff0c;此文開啟知識盛宴與思想碰撞&#x1f389;。 快來參與討論&#x1f4ac;&#xff0c;點贊&#x1f44d;、收藏?、分享&#x1f4e4;&#xff0c;共創活力社區。 在 Linux 系統編程中&#xff0c;動靜態庫是重要的組成部分&#xff0…

06-公寓租賃項目-后臺管理-公寓管理篇

尚庭公寓項目/公寓管理模塊 https://www.yuque.com/pkqzyh/qg2yge/5ba67653b51379d18df61b9c14c3e946 一、屬性管理 屬性管理頁面包含公寓和房間各種可選的屬性信息&#xff0c;其中包括房間的可選支付方式、房間的可選租期、房間的配套、公寓的配套等等。其所需接口如下 1.1…

Links for llama-cpp-python whl安裝包下載地址

Links for llama-cpp-python whl安裝包下載地址 Links for llama-cpp-python whl安裝包下載地址 https://github.com/abetlen/llama-cpp-python/releases

為境外組織提供企業商業秘密犯法嗎?

企業商業秘密百問百答之九十六&#xff1a;為境外組織提供企業商業秘密犯法嗎&#xff1f; 在日常的對外交流中&#xff0c;企業若暗中為境外的機構、組織或人員竊取、刺探、收買或非法提供商業秘密&#xff0c;這種行為嚴重侵犯了商業秘密權利人的合法權益&#xff0c;更深遠…

grep 命令詳解(通俗版)

1. 基礎概念 grep 是 Linux 下的文本搜索工具&#xff0c;核心功能是從文件或輸入流中篩選出包含指定關鍵詞的行。 它像“文本界的搜索引擎”&#xff0c;能快速定位關鍵信息&#xff0c;特別適合日志分析、代碼排查等場景。 2. 基礎語法 grep [選項] "搜索詞" 文件…

JSVMP逆向實戰:原理分析與破解思路詳解

引言 在當今Web安全領域&#xff0c;JavaScript虛擬機保護&#xff08;JSVMP&#xff09;技術被廣泛應用于前端代碼的保護和反爬機制中。作為前端逆向工程師&#xff0c;掌握JSVMP逆向技術已成為必備技能。本文將深入剖析JSVMP的工作原理&#xff0c;并分享實用的逆向破解思路…

【youcans論文精讀】弱監督深度檢測網絡(Weakly Supervised Deep Detection Networks)

歡迎關注『youcans論文精讀』系列 本專欄內容和資源同步到 GitHub/youcans 【youcans論文精讀】弱監督深度檢測網絡 WSDDN 0. 弱監督檢測的開山之作0.1 論文簡介0.2 WSDNN 的步驟0.3 摘要 1. 引言2. 相關工作3. 方法3.1 預訓練網絡3.2 弱監督深度檢測網絡3.3 WSDDN訓練3.4 空間…

基于Contiue來閱讀open-r1中的GRPO訓練代碼

原創 快樂王子HP 快樂王子AI說 2025年04月03日 23:54 廣東 前面安裝了vscode[1]同時也安裝了Coninue的相關插件[2]&#xff0c;現在想用它們來閱讀一下open-r1項目的代碼[3]。 首先&#xff0c;從啟動訓練開始(以GRPO為例子&#xff09; 第一步&#xff0c;使用TRL的vLLM后端…