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

C++ में अंतिम K संख्याओं का गुणनफल


मान लीजिए कि हमारे पास ProductOfNumbers नामक वर्ग लागू है जो दो विधियों का समर्थन करता है -

  • add(int num):यह संख्या संख्या को संख्याओं की वर्तमान सूची के पीछे जोड़ता है।

  • getProduct(int k):यह वर्तमान सूची में अंतिम k संख्याओं का गुणनफल देता है।

हम मान सकते हैं कि हमेशा वर्तमान सूची में कम से कम k संख्याएँ होती हैं। तो उदाहरण के लिए, यदि इनपुट की तरह है - जोड़ें(3), जोड़ें(0), जोड़ें(2), जोड़ें(5), जोड़ें(4), उत्पाद(2), getProduct(3), getProduct(4), add(8), getProduct(2), तो आउटपुट होगा (प्रत्येक फंक्शन कॉल के बाद) -

[3], [3, 0], [3, 0, 2], [3, 0, 2, 5], [3, 0, 2, 5, 4], then (5 * 4) = 20, then (2 * 5 * 4) = 40, then (0 * 2 * 5 * 4) = 0, then [3, 0, 2, 5, 4, 8], then (4 * 8) = 32.

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

  • आरंभीकरण अनुभाग में, यह एक सरणी बनाएगा, और उसमें 1 डाल देगा

  • जोड़ें () विधि संख्या लेगी

  • यदि संख्या 0 है, तो सरणी को साफ़ करें, और 1 डालें, अन्यथा last_element * num को सरणी में डालें

  • getProduct() विधि k को इनपुट के रूप में लेगी

  • n :=सरणी का आकार

  • अगर k> n – 1, तो 0 लौटाएं, अन्यथा dp[n - 1] / dp[n – k – 1]

उदाहरण (C++)

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

#include <bits/stdc++.h>
using namespace std;
class ProductOfNumbers {
public:
   vector <int> dq;
   ProductOfNumbers() {
      dq.push_back(1);
   }
   void add(int num) {
      if(num == 0){
         dq.clear();
         dq.push_back(1);
      }
      else{
         dq.push_back(dq.back() * num);
      }
   }
   int getProduct(int k) {
      int n = (int)dq.size();
      return k > n - 1? 0 : dq[n - 1] / dq[n - k - 1];
   }
};
main(){
   ProductOfNumbers ob;
   (ob.add(3));
   (ob.add(0));
   (ob.add(2));
   (ob.add(5));
   (ob.add(4));
   cout << (ob.getProduct(2)) << endl;
   cout << (ob.getProduct(3)) << endl;
   cout << (ob.getProduct(4)) << endl;
   (ob.add(8));
   cout << (ob.getProduct(2)) << endl;
}

इनपुट

add(3)
add(0)
add(2)
add(5)
add(4)
getProduct(2)
getProduct(3)
getProduct(4)
add(8)
getProduct(2)

आउटपुट

20
40
0
32

  1. C++ में किसी सरणी में सभी अभाज्य संख्याओं का गुणनफल

    कुछ तत्वों के साथ एक पूर्णांक सरणी arr[] को देखते हुए, कार्य उस संख्याओं की सभी अभाज्य संख्याओं का गुणनफल खोजना है। अभाज्य संख्याएँ वे संख्याएँ होती हैं जिन्हें या तो 1 से या स्वयं संख्या से विभाजित किया जाता है, या एक अभाज्य संख्या एक ऐसी संख्या होती है जो 1 और स्वयं संख्या को छोड़कर किसी अन्य संख

  1. C++ प्रोग्राम दो संख्याओं को गुणा करने के लिए

    दो संख्याओं a और b के गुणन से उनका गुणनफल प्राप्त होता है। a का मान a और b का गुणनफल प्राप्त करने के लिए b के मान के रूप में कई बार जोड़ा जाता है। उदाहरण के लिए। 5 * 4 = 20 7 * 8 = 56 9 * 9 = 81 ऑपरेटर का उपयोग करके दो संख्याओं को गुणा करने का कार्यक्रम * ऑपरेटर का उपयोग करके दो संख्याओं को गुणा क

  1. दो नंबर जोड़ने के लिए C++ प्रोग्राम

    जोड़ एक बुनियादी अंकगणितीय ऑपरेशन है। दो संख्याओं को जोड़ने का कार्यक्रम दो संख्याओं का योग करता है और उनके योग को स्क्रीन पर प्रिंट करता है। एक प्रोग्राम जो दो संख्याओं के योग को प्रदर्शित करता है, वह इस प्रकार दिया गया है - उदाहरण #include <iostream> using namespace std; int main() {