Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับเลขฟีโบนักชีในช่วงที่กำหนดในเวลา O(Log n) และช่องว่าง O(1) ใน C++


เราได้รับช่วงที่มีตัวเลขเริ่มต้นและสิ้นสุด และภารกิจคือการคำนวณจำนวนรวมของตัวเลขฟีโบนักชีที่มีอยู่ระหว่างช่วงที่กำหนดในเวลา O(Log n) และช่องว่าง O(1)

ตัวเลขฟีโบนักชีคืออะไร

ตัวเลขฟีโบนักชีคือลำดับของตัวเลขที่เรียกว่าลำดับฟีโบนักชี โดยที่ทุกจำนวนใหม่คือผลรวมของตัวเลขสองตัวที่อยู่ก่อนหน้า

โดยที่ f(0) =0 และ f(1) =1 เช่น f(0) และ f(1) มีตำแหน่งคงที่ในลำดับและการคำนวณจะเริ่มจากตัวเลขที่สาม

สูตรที่ใช้คำนวณลำดับคือ −

Fn =Fn-1 + Fn-2

ที่ไหน

F0 =0, F1 =

ตัวอย่างเช่น

Input − start = 6 and last = 100
Output − Number of fibonacci Numbers in the series are 6

คำอธิบาย − ตัวเลขฟีโบนักชีระหว่าง 6 ถึง 100 คือ 8, 13, 21, 34, 55, 89 เช่น จำนวนทั้งหมดคือ 6

Input − start = 0 and last = 8
Output − 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 น้อยกว่าหรือเท่ากับสิ้นสุด

  • ภายในลูป ตรวจสอบว่า fib1 มากกว่าหรือเท่ากับจุดเริ่มต้นแล้วเพิ่มความละเอียดขึ้น 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