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

C++ में अंतिम K नंबर्स का उत्पाद


मान लीजिए हमें ProductOfNumbers नामक क्लास को इम्प्लीमेंट करना है जो दो मेथड्स को सपोर्ट करता है:

  • add(int num): यह नंबर num को वर्तमान नंबर्स की लिस्ट के अंत में जोड़ता है।

  • getProduct(int k): यह वर्तमान लिस्ट में अंतिम k नंबर्स का उत्पाद लौटाता है।

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

[3], [3, 0], [3, 0, 2], [3, 0, 2, 5], [3, 0, 2, 5, 4], फिर (5 * 4) = 20, फिर (2 * 5 * 4) = 40, फिर (0 * 2 * 5 * 4) = 0, फिर [3, 0, 2, 5, 4, 8], फिर (4 * 8) = 32।

इसे हल करने के लिए, हम इन स्टेप्स को फॉलो करेंगे:

  • इनिशियलाइज़ेशन सेक्शन में, यह एक ऐरे बनाएगा, और इसमें 1 डालेगा

  • add() मेथड num लेगा:

    • अगर num 0 है, तो ऐरे को क्लियर करें, और 1 इंसर्ट करें, अन्यथा लास्ट_एलिमेंट * 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];
    }
};

int 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++ में ऐरे में सभी अभाज्य संख्याओं का गुणनफल C++ में ऐरे में सभी अभाज्य संख्याओं का गुणनफल

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

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

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

  1. - C++ प्रोग्राम: दो संख्याएं जोड़ें

    परिचयजोड़ एक बुनियादी अंकगणितीय संक्रिया है। दो संख्याओं को जोड़ने वाला प्रोग्राम दो संख्याओं का जोड़ करता है और उनका योग स्क्रीन पर प्रिंट करता है। उदाहरण#include <iostream> using namespace std; int main() { int num1 = 15, num2 = 10, sum; sum = num1 + num2; cout << Sum of