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

C++ में N से नीचे दो संख्याओं के गुणकों का योग


इस समस्या में, हमें तीन पूर्णांक M1, M2, और N दिए गए हैं। हमारा कार्य N से नीचे दो संख्याओं के गुणकों का योग ढूंढने के लिए एक प्रोग्राम बनाना है।

यहां, हम N से नीचे उन सभी तत्वों को जोड़ेंगे जो M1 या M2 के गुणक हैं।

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

इनपुट

N = 13, M1 = 4, M2 = 6

आउटपुट

20

व्याख्या - 4 और 6 के गुणक जो 13 से कम हैं: 4, 6, 8, 12।

समस्या का एक सरल समाधान 1 से N तक लूप करना और उन सभी मानों को जोड़ना है जो M1 या M2 से विभाज्य हो सकते हैं।

एल्गोरिदम

चरण 1 - योग = 0, i = 0। i = 1 से N तक लूप करें।

चरण 1.1 - यदि (i%M1 == 0) या (i%M2 == 0), योग += i

चरण 2 - योग लौटाएं।

उदाहरण

हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम,

#include <iostream>
using namespace std;

int calcMulSum(int N, int M1, int M2) {
    int sum = 0;
    for (int i = 0; i < N; i++)
        if (i % M1 == 0 || i % M2 == 0)
            sum += i;
    return sum;
}

int main() {
    int N = 24, M1 = 4, M2 = 7;
    cout << " " << M1 << " और " << M2 << " के गुणकों का योग " << N << " से नीचे है: " << calcMulSum(N, M1, M2);
    return 0;
}

आउटपुट

4 और 7 के गुणकों का योग 24 से नीचे है: 102

यह हमारे समस्या का सबसे अच्छा समाधान नहीं है क्योंकि यह O(n) समय जटिलता लेता है।

एक बेहतर समाधान श्रृंखला के योग के लिए गणितीय सूत्रों का उपयोग करना होगा।

यहां, हम श्रृंखला के योग के सूत्र का उपयोग करेंगे। अंतिम योग (M1 के गुणक + M2 के गुणक - M1*M2 के गुणक) होगा।

n पदों तक x के गुणक का योग दिया जाता है,

Sum(X) = (n * (1+n) * X)/2

आइए योग को सूत्रबद्ध करें,

sum = ( ( ((n/M1)*(1+(n/M1))*M1)/2) + ((n/M2)*(1+(n/M2))*M2)/2 ) - ((n/(M1*M2))*(1+(n/(M1*M2)))*M1*M2)/2 ) )

उदाहरण

समाधान को दर्शाने वाला प्रोग्राम,

#include <iostream>
using namespace std;

int calcMulSum(int N, int M1, int M2) {
    N--;
    return (((N/M1) * (1 + (N/M1)) * M1 / 2) + ((N/M2) * (1 + (N/M2)) * M2 / 2) - ((N/(M1*M2)) * (1 + (N/(M1*M2))) * (M1*M2) / 2));
}

int main() {
    int N = 24, M1 = 4, M2 = 7;
    cout << " " << M1 << " और " << M2 << " के गुणकों का योग " << N << " से नीचे है: " << calcMulSum(N, M1, M2);
    return 0;
}

आउटपुट

4 और 7 के गुणकों का योग 24 से नीचे है: 102

  1. C++ में टू सम IV - इनपुट एक BST है C++ में टू सम IV - इनपुट एक BST है

    मान लीजिए हमारे पास एक बाइनरी सर्च ट्री और एक लक्ष्य मान है; हमें जांचना है कि क्या BST में दो तत्व मौजूद हैं जिनका योग दिए गए लक्ष्य के बराबर है या नहीं। इसलिए, यदि इनपुट जैसा है: तो आउटपुट True होगा। इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे: एक सरणी v परिभाषित करें एक फ़ंक्शन inor

  1. - C++ प्रोग्राम: दो संख्याओं को स्वैप करें

    परिचयदो संख्याओं को स्वैप करने का प्रोग्राम बनाने के दो तरीके हैं। एक में टेम्प वेरिएबल का उपयोग शामिल है और दूसरा तरीका तीसरे वेरिएबल का उपयोग नहीं करता है। इन्हें विस्तार से समझाया गया है - टेम्प वेरिएबल का उपयोग करके दो संख्याओं को स्वैप करेंउदाहरण#include <iostream> using namespace std; i

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

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