इस समस्या में, हमें एक संख्या n दी गई है जो श्रृंखला 2^0, 2^1, 2^2, …, 2^n के n-वें पद को परिभाषित करती है। हमारा कार्य एक प्रोग्राम बनाना है जो श्रृंखला 2^0 + 2^1 + 2^2 +...+ 2^n का योग निकाले।
उदाहरण से समझते हैं
इनपुट
n=6
आउटपुट
व्याख्या
योग = 2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 योग = 1 + 2 + 4 + 8 + 16 + 32 + 64 = 127
समस्या का एक सरल समाधान लूप का उपयोग करके है। 0 से n तक प्रत्येक मान के लिए 2^i ढूंढें और इसे योग वेरिएबल में जोड़ें।
एल्गोरिदम
योग = 0 से आरंभ करें चरण 1: i = 0 से n तक इटरेट करें। और अनुसरण करें: चरण 1.1: योग अपडेट करें, योग += 2^i चरण 2: योग प्रिंट करें।
C++ प्रोग्राम उदाहरण (सरल दृष्टिकोण)
#include <iostream>
#include <math.h>
using namespace std;
int calcSeriesSum(int n) {
int sum = 0;
for (int i = 0; i <= n; i++)
sum += pow(2, i);
return sum;
}
int main() {
int n = 11;
cout << "Sum of the series 2^0 + 2^1 + 2^2 +...+ 2^" << n << " is " << calcSeriesSum(n);
return 0;
}आउटपुट
Sum of the series 2^0 + 2^1 + 2^2 +...+ 2^11 is 4095
यह इस समस्या को हल करने का सबसे प्रभावी तरीका नहीं है क्योंकि यह एक लूप का उपयोग करता है जो इसकी समय जटिलता को O(n) क्रम का बनाता है।
अधिक प्रभावी समाधान: गणितीय सूत्र
एक अधिक प्रभावी समाधान, हम योग के लिए गणितीय सूत्र का उपयोग करेंगे। यह द्वारा दिया गया है:
2^(n+1) - 1
C++ प्रोग्राम उदाहरण (कुशल दृष्टिकोण)
#include <iostream>
#include <math.h>
using namespace std;
int calcSeriesSum(int n) {
return ( (pow(2, (n+1)) - 1) );
}
int main() {
int n = 11;
cout << "Sum of the series 2^0 + 2^1 + 2^2 +...+ 2^" << n << " is " << calcSeriesSum(n);
return 0;
}आउटपुट
Sum of the series 2^0 + 2^1 + 2^2 +...+ 2^11 is 4095