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

級数1*2 * 3 + 2 * 3 * 4 + 3 * 4 *5+の合計を求めるプログラム。 。 。 + C++ではn*(n + 1)*(n + 2)


この問題では、級数のn番目の項を定義する数nが与えられます。私たちのタスクは、シリーズ1 * 2 * 3 + 2 * 3 * 4 + 3 * 4 *5+の合計を見つけるプログラムを作成することです。 。 。 + C++ではn*(n + 1)*(n + 2)

問題の説明 −ここで、与えられた級数のn項までの合計が1 * 2 * 3 + 2 * 3 * 4 + 3 * 4 *5+であることがわかります。 。 。 + n *(n + 1)*(n + 2)。これは、n *(n + 1)*(n + 2)の合計としてデコードできます。

問題を理解するために例を見てみましょう

入力

n = 5

出力

420

説明

1*2*3 + 2*3*4 + 3*4*5 + 4*5*6 + 5*6*7 = 6 + 24 + 60 + 120 + 210 = 420

ソリューションアプローチ

この問題を解決する簡単な方法は、1からnまでのループを使用して、各反復で積を見つけ、それをsumVarに追加することです。ループが終了したら、sumVarを返します。

アルゴリズム

  • ステップ1 −ループi=1からn。
    • ステップ1.1 − sumVar、sumVar + =i *(i + 1)*(i + 2)を更新
  • ステップ2 −sumVarを印刷します。

ソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;
int calcSeriesSum(int n){
   int sumVar = 0;
   for(int i = 1; i <= n; i++)
      sumVar = sumVar + ( (i)*(i+1)*(i+2) );
   return sumVar;
}
int main(){
   int n = 7;
   cout<<"The sum of series till "<<n<<" is "<<calcSeriesSum(n);
   return 0;
}

出力

The sum of series till 7 is 1260

このアプローチは、Nのオーダーの複雑な時間を要するため、効率的ではありません。

別のアプローチ 級数の合計に数式を使用しています。問題の説明で説明したように、この級数は(n)*(n + 1)*(n + 2)の合計と言えます。

この情報を使用して、合計の一般式を作成しましょう。

$ Sum =\ sum _ {\ square =1} ^ \ square \ blacksquare((\ square)\ ast(\ square + 1)\ ast(\ square + 2))$

$ =\ sum \ lbrace {(n ^ 2 + n)(n + 2)} \ rbrace $

$ =\ sum \ lbrace {n ^ 3 + n ^ 2 + 2n ^ 2 + 2n} \ rbrace $

$ =\ sum \ lbrace {n ^ 3 + 3n ^ 2 + 2n} \ rbrace $

$ =\ sum _ {\ square =1} ^ \ square \ blacksquare \ square ^ 3 + 3 \ sum _ {\ square =1} ^ \ square \ blacksquare \ square ^ 2 + 2 \ sum _ {\ square =1} ^ \ square \ blacksquare \ square ^ \ blacksquare $

ここで、合計の一般式を使用します。

$ \ sum _ {\ square =1} ^ \ square \ blacksquare \ square ^ 3 =\ frac {(\ square \ ast(\ square + 1))^ 2} {2} $

$ \ sum _ {\ square =1} ^ \ square \ blacksquare \ square ^ 2 =\ frac {(\ square \ ast(\ square + 1)\ ast(2 \ square + 1))^ \ blacksquare} {6} $

$ \ sum _ {\ square =1} ^ \ square \ blacksquare \ square ^ \ blacksquare =\ frac {(\ square \ ast(\ square + 1)^ \ blacksquare} {2} $

これらすべてを合計式に追加すると、

$ Sum =\ frac {(\ square \ ast(\ square + 1))^ 2} {2 ^ 2} + \ frac {3(\ square \ ast(\ square + 1)\ ast(2 \ square + 1 ))^ \ blacksquare} {6} + \ frac {2(\ square \ ast(\ square + 1))^ \ blacksquare} {2} $

$ =\ frac {(\ square \ ast(\ square + 1))^ \ blacksquare} {2} [((n *(n + 1))/ 2)+(3(2n + 1)/ 3)+ 2] $

$ =\ frac {(\ square \ ast(\ square + 1))^ \ blacksquare} {4} [n ^ 2 + n + 4n + 2 + 4] $

$ =\ frac {(\ square \ ast(\ square + 1))^ \ blacksquare} {4} [n ^ 2 + 5n + 6] $

$ =\ frac {(\ square \ ast(\ square + 1))^ \ blacksquare} {4} [(n + 2)(n + 3)] $

=¼[(n)*(n + 1)*(n + 2)*(n + 3)]

n番目の項までの級数は次の式を使用して計算されます

¼[ (n)*(n+1)*(n+2)*(n+3) ]

ソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;
int calcSeriesSum(int n){
   int sumVar = 0;
   sumVar = ( (n)*(n + 1)*(n + 2)*(n + 3)/4 );
   return sumVar;
}
int main(){
   int n = 7;
   cout<<"The sum of series till "<<n<<" is "<<calcSeriesSum(n);
   return 0;
}

出力

The sum of series till 7 is 1260

  1. シリーズ1、2、11、12、21のN番目の項をC++で検索するプログラム

    この問題では、番号Nが与えられます。私たちのタスクは、C++でシリーズ1、2、11、12、21…のN番目の項を見つけるプログラムを作成することです。 問題の説明 級数のN番目の項を見つけるには- 1、2、11、12、21、22、111、112、.... Nterms シリーズの総称を見つけます。 問題を理解するために例を見てみましょう 入力 N =8 出力 112 ソリューションアプローチ 一般的な用語を導き出すには、シリーズを注意深く観察する必要があります。このシリーズでは、値に1と2しかないことがわかります。そして、すべての用語は1と2の交互になります。したがって、一

  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