首页 > 试题广场 >

Fibonacci数列

[编程题]Fibonacci数列
  • 热度指数:37285 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
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
头像 牛客153494002号
发表于 2022-04-24 06:52:11
int main() { int a = 0;//第一个Fib数 int b = 1;//第二个Fib数 int c = a+b;//第三个Fib数 int n = 0; scanf("%d", &n); while (1) { a = b; b = c; c = 展开全文
头像 白伟仝
发表于 2020-07-24 18:33:10
通项公式求逆: import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); doubl 展开全文
头像 阿贝尔的日记
发表于 2022-09-21 11:50:39
Fibonacci数列 Fibonacci数列 /* 2022年09月21日 11:43:09 循环生成斐波那契数,直到碰到最接近n的数。 然后找n前后两个斐波那契数,看看哪个距离更近。 */ #include <iostream> #include <algorithm> 展开全文
头像 杯浅
发表于 2022-04-13 21:52:49
#include <math.h> #include <stdio.h> int main() { int fib1 = 0; int fib2 = 1; int fib3 = 1; int n = 0; scanf("%d", &n); while (1 展开全文
头像 Stephen丶curry
发表于 2022-08-05 14:58:59
#include<iostream> #include<cmath> using namespace std; int main() { int n; cin >> n; int a = 0; int b = 1; int c = 0; for (i 展开全文
头像 小唐不想秃
发表于 2023-08-31 10:53:57
#include <stdio.h> #include<stdlib.h> int main() { int a = 0; int b = 1; int c = 1; int n = 0; scanf("%d",&a 展开全文
头像 叶孤城_
发表于 2023-08-04 19:53:32
#include <stdio.h> int main() { int arr[40]={1,2}; int i=2; int a=0; int num=0; scanf("%d",&num); while(a 展开全文
头像 我fo慈悲
发表于 2023-05-15 21:59:22
输入a;最终目的:a最少多少步可以变为fib数思路:找到距离a最近的两个fib数一个小于等于a设为left,一个大于a设为right;输出:min(a-left,right-a); #include <iostream> using namespace std; int main() 展开全文
头像 11111111111111yu
发表于 2022-07-28 20:47:50
n = int(input()) a,b = 0,1 res = 999999 while True:     a,b = b,a+b     展开全文
头像 牛客312245140号
发表于 2023-03-04 22:15:51
#include <stdio.h> int step(int n) { if(n<3) { return 0; } int cur=1; int befer=0; int tmp=0; while(cur&l 展开全文