इस समस्या में, हमें एक संख्या n दी गई है जो श्रृंखला 2^0, 2^1, 2^2, …, 2^n के n-वें पद को परिभाषित करती है। हमारा काम 2^0 + 2^1 + 2^2 +...+ 2^n.
श्रृंखला का योग ज्ञात करने के लिए एक प्रोग्राम बनाना है।समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
n=6
आउटपुट
स्पष्टीकरण
sum = 2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 sum = 1 + 2 + 4 + 8 + 16 + 32 + 64 = 127
लूप का उपयोग करके समस्या का एक सरल समाधान है। 0 से n तक के प्रत्येक मान के लिए 2^i ज्ञात करना और इसे योग चर में जोड़ना।
एल्गोरिदम
Initialize sum = 0 Step 1: Iterate from i = 0 to n. And follow : Step 1.1: Update sum, sum += 2^i. Step 2: Print sum.
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम,
#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
इस समस्या को हल करने के लिए यह सबसे प्रभावी तरीका नहीं है क्योंकि यह एक लूप का उपयोग करता है जो ऑर्डर ओ (एन) की समय जटिलता बनाता है।
एक अधिक प्रभावी समाधान, हम योग के लिए गणितीय सूत्र का उपयोग करेंगे। यह
. द्वारा दिया गया है2^(n+1) - 1
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
#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