ในปัญหานี้ เราได้รับค่าจำนวนเต็ม N งานของเราคือการใช้โปรแกรม C + + เพื่อค้นหา Nth Non Fibonacci Number .
Fibonacci Series สร้างตัวเลขที่ตามมาด้วยการบวกตัวเลขก่อนหน้าสองตัว อนุกรมฟีโบนักชีเริ่มต้นจากตัวเลขสองตัว - F0 &F1 ค่าเริ่มต้นของ F0 &F1 สามารถรับได้ 0, 1 หรือ 1, 1 ตามลำดับ
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล
N = 5
ผลผลิต
10
แนวทางการแก้ปัญหา
วิธีแก้ปัญหาอย่างง่ายคือการหาตัวเลขฟีโบนักชีแล้วพิมพ์ตัวเลข n ตัวแรกที่ไม่มีอยู่ในตัวเลขฟีโบนักชี
อีกวิธีหนึ่งคือการใช้สูตรเลขฟีโบนักชีแล้วบวกช่องว่างระหว่างตัวเลขฟีโบนักชีสองตัวต่อเนื่องกัน ในที่สุด ค่าของผลรวมของช่องว่างทั้งหมดจะส่งผลให้เกิดผลลัพธ์ที่ต้องการ เราจะใช้แนวคิดที่สมเหตุสมผลในการถอดรหัส
อัลกอริทึม
-
สร้างตัวแปรสามตัวที่จะติดตามองค์ประกอบปัจจุบัน องค์ประกอบก่อนหน้า และองค์ประกอบก่อนหน้า
-
ในขณะที่จำนวนที่ไม่ใช่ฟีโบนักชีไม่เป็นค่าลบ ให้ใช้สูตรง่ายๆ ของจำนวนฟีโบนักชี − Fib(n)=Fib(n-1)+Fib(n-2)
-
วิธีนับจำนวนที่ไม่ใช่ฟีโบนักชีโดยใช้สูตร n=n+(curr-prev-1)
-
-
ตอนนี้เพื่อรับหมายเลข n ที่ไม่ใช่ Fibonacci ลบจำนวนก่อนหน้าออกจาก n
ตัวอย่าง
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
#include<iostream> using namespace std; int findNthNonFiboNumber(int n){ int lastLastVal = 1, lastVal = 2, currVal = 3; while (n > 0){ lastLastVal = lastVal; lastVal = currVal; currVal = lastLastVal + lastVal; n = n - (currVal - lastVal - 1); } n = n + (currVal - lastVal - 1); return (lastVal + n); } int main(){ int n = 7; cout<<"Nth non fibonacci number is "<<findNthNonFiboNumber(n); return 0; }
ผลลัพธ์
Nth non fibonacci number is 12