C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++での級数2^0 + 2 ^ 1 + 2 ^ 2 + ... + 2^nの合計


この問題では、級数2 ^ 0、2 ^ 1、2 ^ 2、…、2^nの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

これは、次数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



  1. 級数の合計を求めるC++プログラム1+1/2 ^ 2 + 1/3 ^3+…..+1/ n ^ n

    このチュートリアルでは、与えられた級数の合計を見つけるプログラムについて説明します1 + 1/2 ^ 2 + 1/3 ^3+…..+1 / n^n。 このために、nの値が与えられます。私たちのタスクは、最初の項から始まるすべての項を合計して、与えられた系列の合計を見つけることです。 例 #include <iostream> #include <math.h> using namespace std; //calculating the sum of the series double calc_sum(int n) {    int i; &nb

  2. 算術級数の合計のためのC++プログラム

    「a」(第1項)、「d」(共通の差)、「n」(文字列内の値の数)が与えられ、タスクは級数を生成し、それによってそれらの合計を計算することです。 算術級数とは 算術級数は、シリーズの最初の項が「a」で固定され、それらの間の一般的な違いが「d」である、共通の違いを持つ数列です。 -として表されます a、a + d、a + 2d、a + 3d 、。 。 。 例 Input-: a = 1.5, d = 0.5, n=10 Output-: sum of series A.P is : 37.5 Input : a = 2.5, d = 1.5, n = 20 Output : sum of s