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

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


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

होने पर एक ऐरे में इंडेक्स L से R तक एलिमेंट के योग की गणना करने के लिए एक प्रोग्राम बनाना है।

इसलिए, हमें ऐरे के रेंज [एल, आर] के भीतर तत्वों का योग खोजने की जरूरत है।

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

इनपुट

L = 2 , R = 6

आउटपुट

4

स्पष्टीकरण

arr[] = {-1, 2, -3, 4, -5, 6}
Sum = 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<<"Sum of elements of array from index "<<L<<" to "<<R<<" is "lt;lt;CalcArrSumLtoR(L, R);
   return 0;
}

आउटपुट

Sum of elements of array from index 3 to 15 is -9

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

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

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

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

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

sum = (sum of first R even number - sum of first (L-1) even number ) - (sum of first R odd number - sum of first (L-1) odd number )

* 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<<"Sum of elements of array from index "<<L<<" to "<<R<<" is "<<CalcArrSumLtoR(L, R);
   return 0;
}

आउटपुट

Sum of elements of array from index 3 to 15 is -9

  1. सी ++ में एसटीएल का उपयोग कर ऐरे के तत्वों का योग कैसे प्राप्त करें?

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

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

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

  1. सी ++ में सरणी के सभी तत्वों पर एक्सओआर ऑपरेशन लागू करके सरणी योग को कम करना

    विवरण आकार की एक सरणी को देखते हुए, एन। एक तत्व एक्स खोजें जैसे कि सरणी तत्वों का योग न्यूनतम होना चाहिए जब एक्सओआर ऑपरेशन एक्स और सरणी के प्रत्येक तत्व के साथ किया जाता है। If input array is: arr [] = {8, 5, 7, 6, 9} then minimum sum will be 30 Binary representation of array elments are: 8 : 1000