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

โปรแกรม C++ หาพจน์ที่ N ของเลขไม่ใช่ฟีโบนัชชี


ในปัญหานี้ เราได้รับค่าจำนวนเต็ม N ภารกิจของเราคือการใช้ โปรแกรม C++ หาพจน์ที่ N ของเลขไม่ใช่ฟีโบนัชชี

ชุดฟีโบนัชชีสร้างตัวเลขถัดไปโดยการบวกสองตัวเลขก่อนหน้า ชุดฟีโบนัชชีเริ่มจากสองตัวเลข - 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 ให้ลบตัวเลขก่อนหน้าออกจาก 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