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

C++ में K के बराबर योग के साथ न्यूनतम फाइबोनैचि शब्द

इस समस्या में, हमें एक नंबर K दिया जाता है। हमारा कार्य K के बराबर योग के साथ न्यूनतम फिबोनाची शब्द खोजना है। ।

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

फाइबोनैचि सीरीज 0 1 1 2 3 5 8 13

. है

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट

K = 5

आउटपुट

2

स्पष्टीकरण

The sum 5 can be made using 3 and 2.

समाधान दृष्टिकोण

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

सबसे पहले, हम फाइबोनैचि संख्याओं को योग n से कम या उसके बराबर तक जोड़ते हैं। फिर अंतिम पद से शुरू करके हम उस पद को n से n>kवें पद तक घटाते हैं। और साथ-साथ, पदों की संख्या की संख्या बढ़ाएँ। उस बिंदु पर जब n

एल्गोरिदम

  • फिबोनाची शब्दों की गणना के लिए एक फ़ंक्शन बनाएं।

  • उन सभी फाइबोनैचि शब्दों की गणना करें जो n से कम या उसके बराबर हों।

  • यदि अगला पद n से बड़ा है, तो इसे सदिश में न धकेलें और वापस लौटें।

  • n के बराबर योग वाले फाइबोनैचि पदों की न्यूनतम संख्या ज्ञात करने के लिए एक फ़ंक्शन बनाएं।

  • फिबोनाची शब्दों को संग्रहीत करने के लिए एक वेक्टर प्रारंभ करें।

  • योग n से योग>0 तक फाइबोनैचि शब्दों को घटाएं।

  • योग में योगदान करने वाले शब्दों की संख्या ज्ञात करने के लिए योग n को jth फाइबोनैचि शब्द से विभाजित करें।

  • प्राप्त गणना को आउटपुट के रूप में प्रिंट करें।

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम

#include <bits/stdc++.h>
using namespace std;
void findFiboTerms(vector<int>& fiboVals, int K){
   int i = 3, nextTerm;
   fiboVals.push_back(0);
   fiboVals.push_back(1);
   fiboVals.push_back(1);
   while (1) {
      nextTerm = fiboVals[i - 1] + fiboVals[i - 2];
      if (nextTerm > K)
         return;
      fiboVals.push_back(nextTerm);
      i++;
   }
}
int findTermForSum(int K){
   vector<int> fiboVals;
   findFiboTerms(fiboVals, K);
   int termCount = 0, j = fiboVals.size() - 1;
   while (K > 0) {
      termCount += (K / fiboVals[j]);
      K %= (fiboVals[j]);
      j--;
   }
   return termCount;
}
int main(){
   int K = 11;
   cout<<"Minimum Fibonacci terms with sum equal to K is "<<findTermForSum(K);
   return 0;
}

आउटपुट

Minimum Fibonacci terms with sum equal to K is 2

  1. C++ में दिए गए अंकों के योग के साथ संख्याएं (N से छोटी या उसके बराबर) गिनें

    एक स्ट्रिंग स्ट्रिंग को देखते हुए जिसमें एक संख्या और इनपुट के रूप में कुल योग होता है। लक्ष्य str तक की संख्याओं को खोजना है जिनमें अंकों का योग योग के बराबर हो। आइए उदाहरणों से समझते हैं। उदाहरण के लिए इनपुट - एन =”110” योग=5 आउटपुट - दिए गए अंकों के योग के साथ N से छोटी या उसके बराबर संख्याओं

  1. सी ++ में समान योग और एक्सओआर

    इस समस्या में, हमें एक पूर्णांक n दिया गया है। हमारा कार्य i =0 से n तक पूर्णांकों की संख्या ज्ञात करने के लिए एक प्रोग्राम बनाना है, जहाँ योग XOR के बराबर है अर्थात (n+i) =(n^i)। समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट: एन =4 आउटपुट: 4 स्पष्टीकरण: 0 से n तक के सभी मानों को ध्यान में

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

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