当前位置: 首页 > news >正文

OJ练习之Fibonacci数列

WY22 Fibonacci数列

入门 通过率:36.94% 时间限制:1秒 空间限制:32M

知识点:数学 模拟

描述

Fibonacci数列是这样定义的:
F[0] = 0
F[1] = 1
for each i ≥ 2: F[i] = F[i-1] + F[i-2]
因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。

输入描述:

输入为一个正整数N(1 ≤ N ≤ 1,000,000)

输出描述:

输出一个最小的步数变为Fibonacci数

示例1

输入:

15

输出:

2

思路一:

#include<iostream>#include<vector>usingnamespacestd;// 从第2个斐波那契数开始,与这个整数做比较,当大于N的时候,保存这个斐波那契数,同时保存上一个斐波那契数,让N分别于这两个数求差值,哪个小就是哪个// 因为题目中已经说明了是N肯定大于等于1,所以可以从第二个或第三个斐波那契数开始比较intmain(){intN=0;vector<longlong>Fib;// 存斐波那契数intleft=-1;// 记录下标intright=-1;// 记录下标inti=1;// 下标从1开始,从第二个斐波那契数开始比较intmin=0;Fib.push_back(0);Fib.push_back(1);cin>>N;while(true){// 如果i > 1,每次就要更新最新的斐波那契值if(i>1){Fib.push_back(Fib[i-1]+Fib[i-2]);}if(Fib[i]==N){min=0;break;}elseif(Fib[i]>N){right=i;left=i-1;min=Fib[right]-N;if(N-Fib[left]<min){min=N-Fib[left];}break;}else{i++;}}cout<<min;return0;}

思路二:

#include<iostream>#include<vector>usingnamespacestd;// 只保留三个斐波那契数a,b,c,因为初始第三个斐波那契数c也是1,只需要让c与N其对比,直到c大于等于N,就说明N满足 b<=N<=c(数学表示),那么只需要获得b到N,和N到c距离的最小值即可。intmain(){inta=0,b=1,c=1;intN=0;cin>>N;while(true){if(c<N){a=b;b=c;c=a+b;}else{cout<<min(c-N,N-b);break;}}return0;}

思路二代码简化:

#include<iostream>#include<vector>usingnamespacestd;// 只保留三个斐波那契数a,b,c,因为初始第三个斐波那契数c也是1,只需要让c与N其对比,直到c大于等于N,就说明N满足 b<=N<=c(数学表示),那么只需要获得b到N,和N到c距离的最小值即可。intmain(){inta=0,b=1,c=1;intN=0;cin>>N;while(c<N){a=b;b=c;c=a+b;}// 走到这里就说明N满足 b<=N<=c(数学表示)cout<<min(c-N,N-b);return0;}
http://www.jsqmd.com/news/647518/

相关文章:

  • 避坑指南:IAR链接脚本(icf)与C代码#pragma配合,管理全局变量地址时常见的3个错误和解决方法
  • 从‘单活’到‘真双活’:手把手教你配置华三M-LAG+VRRP与M-LAG双活网关(含避坑指南)
  • 论文过审双保险:降重 + 消 AI 痕迹一步到位|虎贲等考 AI 改写不踩雷、更安全
  • 专业级SWF逆向工程:JPEXS Free Flash Decompiler深度解析与实战指南
  • 魔兽争霸III终极兼容指南:如何让经典游戏在现代Windows系统完美运行
  • 终极网盘直链解析指南:如何真正掌控你的云盘下载速度
  • 从仿真到现实:如何用RoboCasa数据集训练你的家务机器人(含真实迁移实验数据)
  • Zynq7000 USB2.0控制器驱动开发避坑指南:从dQH/dTD链表到中断处理的实战解析
  • 从论文到 PPT 一键成型!虎贲等考 AI PPT:科研党 / 毕业生的演示效率革命
  • NTC热敏电阻在开关电源中的关键作用与选型指南
  • 算法基础应用精讲【自动驾驶】-自动驾驶负障碍物感知:从井盖缺失看长尾场景的技术突围
  • 微信小程序ECharts图表库终极指南:5分钟实现专业数据可视化
  • cfd瞬态计算什么时候需要做时间步长无关性验证?
  • 7个步骤掌握Bioicons:科研小白的生物图标免费宝库
  • 免费开源Modbus测试工具:OpenModScan让你的工业通讯调试变得如此简单![特殊字符]
  • 计算机毕业设计:Python城市气候分析与预测平台 Flask框架 随机森林 K-Means 可视化 数据分析 大数据 机器学习 深度学习(建议收藏)✅
  • 智能体交互利器:CLI vs MCP,如何选择?
  • 2025-2026年国内心理咨询机构推荐:五家口碑服务评测对比领先学生考前焦虑睡眠障碍 - 品牌推荐
  • Windows热键冲突终极指南:Hotkey Detective帮你3分钟定位键盘“小偷“
  • CISSP 域5知识点 身份全生命周期管理
  • 用Multisim 13.0仿真二极管平衡混频器:从波形观察到频谱分析的完整实验流程
  • 2026年活性炭与催化剂回收公司最新参考:木质活性炭回收、活性炭提纯回收、废催化剂回收、贵金属催化剂回收、河南淏津活性炭以专业合规守护资源循环​、随着环保政策不断收紧 - 海棠依旧大
  • 天赐范式第12天早饭前:【重磅开源】基于拓扑逻辑强制的高能物理异常信号提取框架——文尾附完整Python代码
  • 计算机毕业设计:Python降雨量智能监测与预警系统 Flask框架 数据分析 可视化 大数据 AI 大模型 爬虫 数据大屏(建议收藏)✅
  • Video DownloadHelper配套应用完全指南:3步轻松实现专业级视频下载
  • InternVL3.5 使用笔记
  • CISSP 域5知识点 身份认证与授权
  • Linux网络模拟实战:用NetEm和TC命令打造你的专属弱网环境(附常见问题排查)
  • 单总线CPU设计(定长指令周期3级时序)(HUST)实战指南
  • JAVA智能配电房管理系统源码:含数据字典、完整文档及多种功能实现