Sum of the series 2^0 + 2^1 + 2^2 +...+ 2^n in C++

C++Server Side ProgrammingProgramming

In this problem, we are given a number n which defines the n-th term of the series 2^0, 2^1, 2^2, …, 2^n. Our task is to create a program to find the sum of the series 2^0 + 2^1 + 2^2 +...+ 2^n.

Let’s take an example to understand the problem,

Input

n=6

Output 

Explanation 

sum = 2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6
sum = 1 + 2 + 4 + 8 + 16 + 32 + 64 = 127

A simple solution to the problem is by using the loop. Finding the 2^i, for each value from 0 to n and add it to the sum variable.

Algorithm

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.

Example

Program to illustrate the working of our solution,

 Live Demo

#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;
}

Output

Sum of the series 2^0 + 2^1 + 2^2 +...+ 2^11 is 4095

This is not the most effective method to solve this problem as it uses a loop that makes its time complexity of the order O(n).

A more effective solution, we will use the mathematical formula for the sum. It is given by

 2^(n+1) - 1

Example

Program to illustrate the working of our solution,

Live Demo

#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;
}

Output

Sum of the series 2^0 + 2^1 + 2^2 +...+ 2^11 is 4095


raja
Published on 17-Aug-2020 09:08:06
Advertisements