C ++中2 ^ 0 + 2 ^ 1 + 2 ^ 2 + ... + 2 ^ n系列的总和

在这个问题中,我们得到一个数字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并将其添加到sum变量中。

算法

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

这不是解决此问题的最有效方法,因为它使用了使时间复杂度为O(n)的循环。

一个更有效的解决方案,我们将使用数学公式求和。它由

 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


以上是 C ++中2 ^ 0 + 2 ^ 1 + 2 ^ 2 + ... + 2 ^ n系列的总和 的全部内容, 来源链接: utcz.com/z/317092.html

回到顶部