इस समस्या में, हमें दो संख्याएं 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