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

C++ में दी गई रेंज में फाइबोनैचि संख्याओं की गिनती O(Log n) समय और O(1) स्पेस में


हमें प्रारंभ और अंत संख्याओं वाली रेंज दी गई है और कार्य दी गई रेंज के बीच उपलब्ध फाइबोनैचि संख्याओं की कुल संख्या की गणना करना है O(Log n) समय और O(1) स्पेस में।

फाइबोनैचि संख्याएं क्या हैं

फाइबोनैचि संख्याएं संख्याओं का एक क्रम है जिसे फाइबोनैचि अनुक्रम के रूप में जाना जाता है जहां प्रत्येक नई संख्या पिछली दो पूर्ववर्ती संख्याओं का योग होती है।

जहां, f(0) = 0 और f(1) = 1 यानी f(0) और f(1) का अनुक्रम में निश्चित स्थान है और गणना तीसरी संख्या से शुरू होगी।

अनुक्रम की गणना के लिए उपयोग किया गया सूत्र -

Fn = Fn-1 + Fn-2

जहां,

F0 = 0, F1 = 1

उदाहरण के लिए

इनपुट - प्रारंभ = 6 और अंत = 100 आउटपुट - श्रृंखला में फाइबोनैचि संख्याओं की संख्या 6 है

व्याख्या - 6 और 100 के बीच फाइबोनैचि संख्याएं 8, 13, 21, 34, 55, 89 हैं यानी कुल गिनती 6 है

इनपुट - प्रारंभ = 0 और अंत = 8 आउटपुट - श्रृंखला में फाइबोनैचि संख्याओं की संख्या 7 है

व्याख्या - 0 और 8 के बीच फाइबोनैचि संख्याएं 0, 1, 1, 2, 3, 5, 8 हैं यानी कुल गिनती 7 है

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण

  • रेंज बनाने के लिए प्रारंभ और अंत संख्याएं इनपुट करें

  • fib1 को 0, fib2 को 1, fib3 को 1 घोषित और आरंभ करें

  • एक अस्थायी चर res घोषित करें और इसे 0 से आरंभ करें

  • एक लूप शुरू करें, जब तक fib1 अंत से कम या बराबर है

  • लूप के अंदर, जांचें कि क्या fib1 प्रारंभ से बड़ा या बराबर है तो res को 1 से बढ़ाएं

  • fib1 को fib2 पर सेट करें, fib2 को fib3 पर और fib3 को fib1 + fib2 पर सेट करें

  • res लौटाएं

  • परिणाम प्रिंट करें

उदाहरण

#include <bits/stdc++.h>
using namespace std;

// प्रारंभ से अंत तक की रेंज में फाइबोनैचि संख्याओं को गिनने के लिए फंक्शन
int count_fibonacci(int start, int last) {
    // पहले तीन फाइबोनैचि नंबर
    int fib1 = 0, fib2 = 1, fib3 = 1;
    // फाइबोनैचि की संख्या गिनने के लिए res
    int res = 0;
    while (fib1 <= last) {
        if (fib1 >= start) {
            res++;
        }
        fib1 = fib2;
        fib2 = fib3;
        fib3 = fib1 + fib2;
    }
    return res;
}

// मुख्य फंक्शन
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

  1. - C++ में m से विभाज्य और सम स्थिति में अंक d वाली रेंज में संख्याओं की गिनती

    हमें एक पूर्णांक रेंज, एक वेरिएबल m दिया गया है जिसका उपयोग भाजक के रूप में किया जाता है और एक वेरिएबल d जिसका उपयोग यह जांचने के लिए किया जाता है कि अंक d सम स्थिति पर है या नहीं और कार्य रेंज में उन संख्याओं की गिनती करना है जो वेरिएबल m से विभाज्य हैं और सम स्थितियों में अंक d रखती हैं। उदाहरण के

  1. - C++ में रेंज में उन संख्याओं की गिनती जिनके अंक और q से गुणनफल के अंक असमान हैं

    रेंज वेरिएबल के रूप में दो संख्याएं start और end और एक पूर्णांक q इनपुट के रूप में दिया गया है। लक्ष्य रेंज के भीतर उन संख्याओं को ढूंढना है जैसे कि संख्या और q से इसका गुणनफल कोई सामान्य अंक न रखें। यदि संख्या 5 है और q 3 है तो गुणनफल 15 होगा। दोनों 5 और 15 में सामान्य अंक 5 है। यदि संख्या 2 है और

  1. C++ में BST कीज़ को दी गई रेंज में प्रिंट करना - O(1) स्पेस C++ में BST कीज़ को दी गई रेंज में प्रिंट करना - O(1) स्पेस

    इस समस्या में, हमें दो मान k1 और k2 (k1 < k2) दिए गए हैं, और बाइनरी सर्च ट्री की रूट। हमारा कार्य दी गई रेंज में BST कीज़ प्रिंट करने का प्रोग्राम बनाना है। समस्या विवरण: हम ट्री की सभी कीज़ को n1 से n2 तक बढ़ते क्रम में प्रिंट करेंगे। समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट: k1 = 4, k2