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

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

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

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

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

  • एक सरणी को परिभाषित करें f

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

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

  • जबकि f <=k का अंतिम अवयव, −

    . करें
    • f

      . में डालें (f का अंतिम तत्व + f का दूसरा अंतिम तत्व)
  • रिट:=0

  • j :=f का अंतिम सूचकांक

  • जबकि (j>=0 और k> 0) करते हैं −

    • अगर f[j] <=k, तो -

      • के:=के - एफ [जे]

      • (रिटर्न 1 से बढ़ाएं)

    • अन्यथा

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

  • वापसी रिट

उदाहरण

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

#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. उन नोड्स की गणना करें जिनका योग X के साथ C++ में एक फाइबोनैचि संख्या है

    एक बाइनरी ट्री दिया गया है जिसके नोड्स के भार संख्याओं के रूप में हैं। लक्ष्य उन नोड्स की संख्या का पता लगाना है जिनका वजन इस तरह है कि संख्या एक फाइबोनैचि संख्या है। फाइबोनैचि श्रृंखला में संख्याएं हैं:0, 1, 1, 2, 3, 5, 8, 13…। n वीं संख्या का योग है (n−1)वें और (n−2)वें। अगर वजन 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++ में फाइबोनैचि संख्याओं के वर्गों का योग

    F0=0, F1=1 और Fn=Fn-1+Fn-2, F2=F0+F1 F2=0+1 F2=1 फिर जब हम नंबर 1 और 1 जोड़ते हैं तो अगला नंबर 2 होगा F1=1, F2=1 और Fn=Fn-1+Fn-2, F3=F1+F2 F3=1+1 F3=2 फाइबोनैचि अनुक्रम 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, … है हमें ईंधन ऊर्जा श्रृंखला का वर्ग ज्ञात करना है और फिर हमें उसका योग करना है और परिणाम खो