给定具有开始和结束编号的范围,任务是计算在O(Log n)时间和O(1)空间中给定范围之间可用的斐波那契数的总数。
斐波那契数是称为斐波那契数列的数字序列,其中每个新数字都是前两个数之和。
其中,f= 0和f(1)= 1,即f和f(1)在序列中具有固定位置,并且计算将从第三个数字开始。
用于计算序列的公式是-
F n = F n-1 + F n-2
哪里,
F 0 = 0,F 1 = l
例如
Input − start = 6 and last = 100Output − Number of fibonacci Numbers in the series are 6
说明-6到100之间的斐波那契数是8、13、21、34、55、89,即总数为6
Input − start = 0 and last = 8Output − Number of fibonacci Numbers in the series are 7
说明-0和8之间的斐波那契数是0、1、1、2、3、5、8,即总数为7
输入开始和结束编号以创建范围
声明并初始化fib1到0,fib2到1,fib3到1
声明一个临时变量res并将其初始化为0
当fib1小于或等于end时,开始循环
在循环内部,检查fib1是否大于或等于起点,然后将res增加1
将fib1设置为fib2,将fib2设置为fib3,将fib3设置为fib1 + fib2
返回资源
打印结果
#include <bits/stdc++.h> using namespace std; // function to count fibonacci numbers in range // from start to last int count_fibonacci(int start, int last){ // First three Fibonacci Numbers int fib1 = 0, fib2 = 1, fib3 = 1; // res to count the number of fibonacci int res = 0; while (fib1 <= last){ if (fib1 >= start){ res++; } fib1 = fib2; fib2 = fib3; fib3 = fib1 + fib2; } return res; } // main function int main(){ int start = 6, last = 100; cout << "Number of fibonacci Numbers in the series are " << count_fibonacci(start, last); return 0; }
输出结果
如果我们运行上面的代码,它将生成以下输出-
Number of fibonacci Numbers in the series are 6