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

C++ में सरणी में सूचकांक L से R तक के तत्वों का योग जब arr[i] = i * (-1)^i


इस समस्या में, हमें दो संख्याएं L और R दी गई हैं। हमारे पास एक सरणी arr[] भी है जैसे कि arr[i] = i*(-1)^i। हमारा कार्य एक प्रोग्राम बनाना है जो सरणी में सूचकांक L से R तक के तत्वों का योग निकाले जब arr[i] = i*(-1)^i।

तो, हमें सरणी की सीमा [L, R] के भीतर तत्वों का योग ढूंढना होगा।

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

इनपुट

L = 2, R = 6

आउटपुट

4

व्याख्या

arr[] = {-1, 2, -3, 4, -5, 6}
योग = 2 + (-3) + 4 + (-5) + 6 = 4

समस्या का एक सरल समाधान L से R तक लूप चलाना और फिर सभी सम संख्याओं को जोड़ना और सभी विषम संख्याओं को घटाना होगा। और फिर अंत में योग लौटाना।

उदाहरण

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

#include <iostream>
#include <math.h>
using namespace std;

int CalcArrSumLtoR(int L, int R) {
    int sum = 0;
    for (int i = L; i <= R; i++) {
        sum += (i * pow((-1), i));
    }
    return sum;
}

int main() {
    int L = 3, R = 15;
    cout << "सूचकांक " << L << " से " << R << " तक सरणी के तत्वों का योग है " << CalcArrSumLtoR(L, R);
    return 0;
}

आउटपुट

सूचकांक 3 से 15 तक सरणी के तत्वों का योग है -9

यह एक प्रभावी दृष्टिकोण नहीं है और समस्या को O(n) समय जटिलता में हल करेगा।

एक कुशल समाधान n विषम संख्याओं के योग के सूत्र का उपयोग करना होगा। तो,

पहली n विषम संख्याओं का योग = n*n

पहली n सम संख्याओं का योग = n*(n+1)

यहां, अंतिम योग इस प्रकार गणना किया जाएगा:

योग = (पहली R सम संख्या का योग - पहली (L-1) सम संख्या का योग) - (पहली R विषम संख्या का योग - पहली (L-1) विषम संख्या का योग)

* N तक N/2 सम/विषम संख्याएं होंगी। यानी R/2 सम संख्याएं होंगी। इसलिए, हम योग की गणना के लिए R/2 और L/2 का उपयोग करेंगे।

उदाहरण

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

#include <iostream>
using namespace std;

long int findSum(int n, bool isEven) {
    long int total = 0;
    if (isEven == true) {
        total = (n) / 2;
        return (total * (total + 1));
    } else {
        total = (n + 1) / 2;
        return total * total;
    }
}

int CalcArrSumLtoR(int L, int R) {
    return (findSum(R, true) - findSum(L - 1, true)) - (findSum(R, false) - findSum(L - 1, false));
}

int main() {
    int L = 3, R = 15;
    cout << "सूचकांक " << L << " से " << R << " तक सरणी के तत्वों का योग है " << CalcArrSumLtoR(L, R);
    return 0;
}

आउटपुट

सूचकांक 3 से 15 तक सरणी के तत्वों का योग है -9

  1. - C++ में STL का उपयोग करके सरणी के तत्वों का योग कैसे ज्ञात करें?

    यहां हम देखेंगे कि सरणी के सभी तत्वों का योग कैसे ज्ञात करें। इसलिए यदि सरणी [12, 45, 74, 32, 66, 96, 21, 32, 27] की तरह है, तो योग होगा: 405। तो यहां हमें इस समस्या को हल करने के लिए accumulate() फ़ंक्शन का उपयोग करना होगा। इस फ़ंक्शन का विवरण <numeric> हेडर फ़ाइल में मौजूद है। उदाहरण #includ

  1. - C++ में एन्क्रिप्टेड सरणी से मूल सरणी ढूंढना (अन्य तत्वों के योग की सरणी)

    आइए विचार करें कि हमारे पास पूर्णांकों की एक सरणी है, वह सरणी एन्क्रिप्टेड सरणी है। मान लीजिए सरणी A = [10, 14, 12, 13, 11], मूल सरणी B = [5, 1, 3, 2, 4] है। हम देख सकते हैं कि इंडेक्स i पर A का प्रत्येक तत्व इस नियम का पालन करता है: A[i] = B[j] में स्थिति j पर सभी तत्वों का योग, जहां i ≠ j। हमारा क

  1. - C++ में XOR ऑपरेशन द्वारा सरणी योग न्यूनतम करें

    समस्या विवरण एक सरणी दी गई है, एक मान X ढूंढें जिससे प्रत्येक तत्व के साथ XOR करने के बाद सरणी का योग न्यूनतम हो। उदाहरण: arr = {8, 5, 7, 6, 9} यदि X = 5, तो XOR के बाद: 13, 0, 2, 3, 12 → योग = 30 (न्यूनतम) एल्गोरिदम 32-बिट बिटमैप बनाएं प्रत्येक तत्व के सेट बिट्स गिनें n/2 हैं, तो X में वह बिट