Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ प्रोग्राम: Nवां गैर-फाइबोनैचि संख्या खोजना

समस्या विवरण

इस समस्या में, हमें एक पूर्णांक मान N दिया गया है। हमारा कार्य Nवीं गैर-फाइबोनैचि संख्या खोजने के लिए C++ प्रोग्राम का उपयोग करना है।

फाइबोनैचि श्रृंखला पिछली दो संख्याओं को जोड़कर बाद की संख्या उत्पन्न करती है। फाइबोनैचि श्रृंखला दो संख्याओं से शुरू होती है - F0 और F1। F0 और F1 के प्रारंभिक मान 0, 1 या 1, 1 लिए जा सकते हैं।

उदाहरण

इनपुट

N = 5

आउटपुट

10

व्याख्या: फाइबोनैचि संख्याएं: 0, 1, 1, 2, 3, 5, 8, 13... गैर-फाइबोनैचि: 4, 6, 7, 9, 10... 5वीं गैर-फाइबोनैचि = 10

हल का दृष्टिकोण

समस्या का एक सरल समाधान फाइबोनैचि संख्याओं को खोजना और फिर पहली n संख्याओं को प्रिंट करना है जो फाइबोनैचि संख्याओं में मौजूद नहीं हैं।

एक अन्य समाधान फाइबोनैचि संख्या सूत्र का उपयोग करना है और फिर दो फाइबोनैचि संख्याओं के बीच के अंतर को लगातार जोड़ना है। अंत में, सभी अंतरों का योग वांछित आउटपुट में परिणत होगा।

एल्गोरिदम

  1. वर्तमान तत्व, पिछला तत्व और उससे पिछला तत्व ट्रैक करने के लिए तीन चर बनाएं
  2. जब तक गैर-फाइबोनैचि की गिनती गैर-ऋणात्मक है, फाइबोनैचि संख्या के सरल सूत्र का उपयोग करें - Fib(n) = Fib(n-1) + Fib(n-2)
  3. गैर-फाइबोनैचि संख्याओं की गिनती प्राप्त करने के लिए सूत्र n = n + (curr - prev - 1) का उपयोग करें
  4. Nवीं गैर-फाइबोनैचि संख्या प्राप्त करने के लिए पिछली संख्या को n से घटाएं

C++ कार्यान्वयन

#include <iostream> 
using namespace std; 

int findNthNonFiboNumber(int n) {
    int prevPrev = 1, prev = 2, curr = 3;
    while (n > 0) {
        prevPrev = prev;
        prev = curr;
        curr = prevPrev + prev;
        n = n - (curr - prev - 1);
    }
    n = n + (curr - prev - 1);
    return (prev + n);
}

int main() {
    int n = 7;
    cout << "Nवीं गैर-फाइबोनैचि संख्या है " << findNthNonFiboNumber(n);
    return 0;
}

आउटपुट

Nवीं गैर-फाइबोनैचि संख्या है 12

कार्यविधि समझ

दो क्रमागत फाइबोनैचि संख्याओं F(k) और F(k+1) के बीच, (F(k+1) - F(k) - 1) गैर-फाइबोनैचि संख्याएं होती हैं।

  • F(3)=2, F(4)=3 → 0 गैर-फाइबोनैचि
  • F(4)=3, F(5)=5 → 1 गैर-फाइबोनैचि: 4
  • F(5)=5, F(6)=8 → 2 गैर-फाइबोनैचि: 6, 7
  • F(6)=8, F(7)=13 → 4 गैर-फाइबोनैचि: 9, 10, 11, 12

हम इन गिनतियों को N से घटाते रहते हैं जब तक N ≤ 0 न हो जाए, फिर उत्तर निकालते हैं।

जटिलता विश्लेषण

  • समय जटिलता: O(log N) - फाइबोनैचि संख्याएं घातीय रूप से बढ़ती हैं
  • स्पेस जटिलता: O(1)
  1. - C++ में Nवें फाइबोनैचि संख्या के अंतिम दो अंक ढूंढना

    इस समस्या में, हमें एक संख्या N दी गई है। हमारा कार्य C++ में Nवें फाइबोनैचि संख्या के अंतिम दो अंक ढूंढने के लिए एक प्रोग्राम बनाना है। समस्या विवरण हमें Nवें फाइबोनैचि संख्या के अंतिम दो अंक (यानी दो LSB) ढूंढने हैं। उदाहरण इनपुट: N = 120 आउटपुट: 81 हल का दृष्टिकोण एक सरल समाधान Nवें पद को ढूं

  1. - C++ प्रोग्राम: संख्या की समता (Parity) को कुशलतापूर्वक ज्ञात करना

    इस लेख में, हम एक प्रोग्राम पर चर्चा करेंगे जो दी गई संख्या N की समता (Parity) ज्ञात करता है। समता को किसी संख्या के बाइनरी प्रतिनिधित्व में सेट बिट्स की संख्या ( 1 की संख्या) के रूप में परिभाषित किया गया है। यदि बाइनरी प्रतिनिधित्व में 1 की संख्या सम है, तो समता को सम समता कहा जाता है और यदि बाइनर

  1. - पायथन में Nवीं फाइबोनैचि संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक संख्या n है, हमें nवीं फाइबोनैचि पद ढूंढना है। जैसा कि हम जानते हैं iवां फाइबोनैचि पद f(i) = f(i-1) + f(i-2), पहले दो पद 0, 1 हैं। उदाहरण के लिए, यदि इनपुट 15 है, तो आउटपुट 610 होगा। इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे: first := 0, second := 1 i को 2 से n तक के