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

C++ में फाइबोनैचि नंबर्स की न्यूनतम संख्या जिनका योग K है


मान लीजिए हमारे पास एक नंबर k है, हमें उन फाइबोनैचि नंबर्स की न्यूनतम संख्या ढूंढनी है जिनका योग k के बराबर है, चाहे एक फाइबोनैचि नंबर का कई बार उपयोग किया जा सके।

इसलिए, यदि इनपुट है k = 7, तो आउटपुट 2 होगा, क्योंकि फाइबोनैचि नंबर्स हैं: 1, 1, 2, 3, 5, 8, 13, ... k = 7 के लिए हम 2 + 5 = 7 उपयोग कर सकते हैं।

इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:

  • एक ऐरे f परिभाषित करें

  • 0 को f के अंत में डालें

  • 1 को f के अंत में डालें

  • जब f का अंतिम एलिमेंट <= k, करें -

    • (f का अंतिम एलिमेंट + f का दूसरा अंतिम एलिमेंट) को f में डालें

  • ret := 0

  • j := f का अंतिम इंडेक्स

  • जब (j >= 0 और k > 0), करें -

    • यदि f[j] <= k, तो -

      • k := k - f[j]

      • (ret को 1 से बढ़ाएं)

    • अन्यथा

      • (j को 1 से घटाएं)

  • ret लौटाएं

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

#include <bits/stdc++.h> using namespace std; class Solution { public:    int findMinFibonacciNumbers(int k) {       vector<int> f;       f.push_back(0);       f.push_back(1);       while (f.back() <= k) {          f.push_back(f[f.size() - 1] + f[f.size() - 2]);       }       int ret = 0;       int j = f.size() - 1;       while (j >= 0 && k > 0) {          if (f[j] <= k) {             k -= f[j];             ret++;          }          else             j--;       }       return ret;    } }; main(){    Solution ob;    cout << (ob.findMinFibonacciNumbers(7)); }

इनपुट

7

आउटपुट

2

  1. C++ में उन नोड्स को गिनना जिनका योग X के साथ फाइबोनैचि संख्या है C++ में उन नोड्स को गिनना जिनका योग X के साथ फाइबोनैचि संख्या है

    नोड्स के वजन वाली एक बाइनरी ट्री दी गई है। लक्ष्य उन नोड्स की संख्या ढूंढना है जिनके वजन ऐसे हैं कि संख्या एक फाइबोनैचि संख्या है। फाइबोनैचि श्रृंखला में संख्याएं हैं: 0, 1, 1, 2, 3, 5, 8, 13... nth संख्या (n-1)th और (n-2)th का योग है। यदि वजन 13 है तो यह एक फाइबोनैचि संख्या है इसलिए नोड गिना जाएगा।

  1. - C++ में किसी संख्या के गुणनखंडों का न्यूनतम योग ढूंढना

    यहां हम देखेंगे कि किसी दी गई संख्या के गुणनखंडों का न्यूनतम योग कैसे प्राप्त करें। मान लीजिए एक संख्या 12 है। हम इसे अलग-अलग तरीकों से गुणनखंडित कर सकते हैं: 12 = 12 × 1 (12 + 1 = 13) 12 = 2 × 6 (2 + 6 = 8) 12 = 3 × 4 (3 + 4 = 7) 12 = 2 × 2 × 3 (2 + 2 + 3 = 7) न्यूनतम योग 7 है। हम

  1. - C++ में फाइबोनैचि संख्याओं के वर्गों का योग

    समस्या विवरण फाइबोनैचि श्रृंखला: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... जहां प्रत्येक संख्या पिछली दो का योग होती है। पहले n फाइबोनैचि संख्याओं के वर्गों का योग ज्ञात करें। उदाहरण: n = 4 F0=0, F1=1, F2=1, F3=2, F4=3 वर्ग: 0²+1²+1²+2²+3² = 0+1+1+4+9 = 15 उदाहरण कोड #include <iostream> using