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

C++で偶数インデックスの二項係数の合計を求めます


数値がnであるとすると、$$ \ left(\ begin {array} {c} n \\ 0 \ end {array} \ right)+ \ left(\ begin {array} {c} n \\ 2 \ end {array} \ right)+ \ left(\ begin {array} {c} n \\ 4 \ end {array} \ right)+ \ left(\ begin {array } {c} n \\ 6 \ end {array} \ right)+ ... \ left(\ begin {array} {c} 4 \\ 0 \ end {array} \ right)+ \ left(\ begin { array} {c} 4 \\ 2 \ end {array} \ right)+ \ left(\ begin {array} {c} 4 \\ 4 \ end {array} \ right)++ =1 + 6 + 1 =8 $$

したがって、ここではすべての二項係数を検索し、インデックス化された値の合計のみを検索します。

#include<iostream>
using namespace std;
int evenIndexedTermSum(int n) {
   int coeff[n + 1][n + 1];
   for (int i = 0; i <= n; i++) {
      for (int j = 0; j <= min(i, n); j++) {
         if (j == 0 || j == i)
            coeff[i][j] = 1;
         else
            coeff[i][j] = coeff[i - 1][j - 1] + coeff[i - 1][j];
      }
   }
   int sum = 0;
   for (int i = 0; i <= n; i += 2)
   sum += coeff[n][i];
   return sum;
}
int main() {
   int n = 8;
   cout << "Sum of even placed binomial coefficients: " <<evenIndexedTermSum(n);
}

出力

Sum of even placed binomial coefficients: 128

  1. C++の二分木で最大垂直和を見つける

    二分木があるとします。タスクは、垂直順序トラバーサルのすべてのノードの合計の最大値を出力することです。したがって、ツリーが以下のようになっている場合- 垂直方向の走査は-のようなものです 4 2 1 + 5 + 6 = 12 3 + 8 = 11 7 9 ここでの最大値は12です。アプローチは単純です。垂直順序トラバーサルを実行してから、合計を見つけて最大値を確認します。 例 #include<iostream> #include<map> #include<vector> #include<queue> using namespace

  2. 数の偶数の因数の合計を見つけるC++プログラム?

    このセクションでは、効率的な方法で、ある数のすべての素因数の合計を取得する方法を説明します。 n =480と言う数があります、これのすべての要因を取得する必要があります。 480の素因数は2、2、2、2、2、3、5です。すべての偶数の因数の合計は2 + 2 + 2 + 2 + 2 =10です。この問題を解決するには、この規則に従う必要があります。 − 数値が2で割り切れる場合は、それらを合計に加算し、数値を2で繰り返し除算します。 今、数は奇数でなければなりません。したがって、均等な要素は見つかりません。次に、それらの要因を単に無視します。 より良いアイデアを得るためのアル