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

C ++のシリーズ1、3、6、10…(三角数)の合計


この問題では、級数1、3、6、10…(三角数)の要素のnが与えられる数nが与えられます。私たちの仕事は、級数の合計を計算するプログラムを作成することです。

合計を計算する前に、三角数についてブラッシュアップしましょう。

三角数は、三角形の形で表すことができる数です。

三角形は、最初の行に1つのポイントがあり、2番目の行に2つのポイントがある、というように形成されます。

C ++のシリーズ1、3、6、10…(三角数)の合計

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

入力

n = 4

出力

説明 合計=T1+ T2 + T3 + T4 =1 + 3 + 6 + 10 =20

この問題を解決する簡単な方法は、n個の三角数をすべて見つけることです。そして、それらを合計変数に1つずつ追加します。

アルゴリズム

Initialise sum = 0.
Step 1: loop for i = 0 to n. And follow steps 2 and 3
Step 2: for each value of i, calculate the triangular numbers using the formula, t[i] = ∑ i = i*(i+1)/2.
Step 3: Update sum value, sum += t[i].
Step 4: return sum.

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

#include <iostream>
using namespace std;
int calcSeriesSum(int n) {
   int sum = 0;
   for (int i=1; i<=n; i++)
   sum += i*(i+1)/2;
   return sum;
}
int main() {
   int n = 6;
   cout<<"Sum of the series 1, 3, 6, 10 ... (Triangular Numbers) is "<<calcSeriesSum(n);
   return 0;
}

出力

Sum of the series 1, 3, 6, 10 ... (Triangular Numbers) is 56

O(n)、時間計算量がかかるため、これは最も効果的なソリューションではありません。

より効果的な解決策は、合計に直接式を使用することです。

Tiがi番目の三角数の場合。次に、

T1 =1

T2 =3

T3 =6

Tn =n *(n + 1)/ 2

すべての三角数の合計は

です。
sum = 1 + 3 + 6 + 10 + …
sum = T1 + T2 + T3 + … + Tn
sum = ∑ (Ti) , i -> 0 to n
sum = ∑ (n)(n+1)/2
sum = ½ ∑ n2 + n
sum = ½ ∑n^2 + ∑ n
sum = ½ [ (n*(n+1)*(2n+1)/6) + (n*(n+1)/2) ]
sum = ½ (n*(n+1)/2)*[ (2n+1)/3 + 1 ]
sum = ¼ [n*(n+1)]*[(2n+1+3)/3]
sum = ¼ [n*(n+1)]*[(2n+4)/3]
sum = ¼ [n*(n+1)]*[2(n+2)/3]
sum= ⅙ [n*(n+1)*(n+2)]

これは、三角数の合計の一般式です。

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

#include <iostream>
using namespace std;
int calcSeriesSum(int n) {
   return ( ( n*(n + 1)*(n + 2) )/6);
}
int main() {
   int n = 6;
   cout<<"Sum of the series 1, 3, 6, 10 ... (Triangular Numbers) is "<<calcSeriesSum(n);
   return 0;
}

出力

Sum of the series 1, 3, 6, 10 ... (Triangular Numbers) is 56

  1. C++での代替フィボナッチ数

    フィボナッチ数 は、2つの固定数、通常は o、1で始まる数列として定義されます。 または1、1 シーケンスの連続する要素は、シーケンスの前の2つの番号の合計です。 たとえば、8要素までのフィボナッチ数列は0、1、1、2、3、5、8、13、21、34、55、89です。 それでは、このシリーズを一般化してみましょう。ここで、n番目の項の値は(n-1)番目と(n-2)番目の項の合計に等しくなります。それでは、フィボナッチ数列のn番目の項の式の数学的導出を取得しましょう。 T n =T n-1 + T n-2 この式を使用してフィボナッチ数列の第5項を見つけると、第3項と第4項

  2. 数値がC++で2つの三角数の合計として表現できるかどうかを確認します

    このセクションでは、1つの数を2つの三角数の合計として表現できるかどうかを確認します。三角数は以下のようになります- 例から、1、3、6、10はいくつかの三角数であることがわかります。数N(たとえば16)を2つの三角数(6、10)の合計として表す必要があります。 アプローチは非常に簡単です。 N未満のすべての三角数を取得する必要があります。これらの値からセットを作成します。ここで、集合からXと言う数を取り、N – Xが集合に存在するかどうかを確認する必要があります。そうすると、Xは2つの三角数の合計として表すことができます。 例 #include <iostream> #