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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP