シリーズ1^2-2 ^ 2 + 3 ^ 2-4 ^2...の合計をC++でn個まで検索
この問題では、整数値Nが与えられます。私たちのタスクは、シリーズ1 ^ 2-2 ^ 2 + 3 ^ 2--4 ^2...最大n項の合計を見つけることです 。
問題を理解するために例を見てみましょう
Input : N = 3 Output : 6
説明 −
12 - 22 + 32 = 1 - 4 + 9 = 6
ソリューションアプローチ
この問題を解決する簡単な方法は、ループを使用することです。イテレータiを使用して1からnにループします。
iが奇数の場合は、(i 2 )合計に。
iが偶数の場合、減算(i 2 )合計に。最後に、ループの後に級数の合計を返します。
アルゴリズム
初期化 −合計=0。
-
ステップ1 −nまでループ、i->1からn
-
ステップ1.1 − iが奇数の場合、(i 2 )合計するには、if(i%2 ==0)=> sum + =i 2
-
ステップ1.2 − iが偶数の場合、(i 2 を追加します )合計するには、if(i%2 ==0)=> sum-=i 2
-
-
ステップ2 −合計を返します。
例
ソリューションの動作を説明するプログラム
#include <iostream> using namespace std; int findSumOfSeries(int n) { int sum = 0; for (int i = 1; i <= n; i++) { if (i % 2 == 0) sum -= (i*i); else sum += (i*i); } return sum; } int main(void) { int n = 5; cout<<"The sum of series is "<<findSumOfSeries(n); }
出力
The sum of series is 15
別のアプローチ 級数の合計に数式を使用しています。
Nが偶数の場合、
$ \ mathrm {sum \:=\:1 ^ 2 \:-\:2 ^ 2 \:+ \:3 ^ 2 \:-\:4 ^ 2 \:+ \:\ dotsm \:+ \ :( n-1)^ 2 \:-n ^ 2} $
$ \ mathrm {sum \:=\ :( 1-2)(1 + 2)\:+ \:(3-4)(3 + 4)\:+ \:\ dotsm(n-1-n)( n-1 + n)} $
$ \ mathrm {sum \:=\:(-1)(3)\:+ \:(-1)(7)\:+ \:(-1)(2n-1)} $
$ \ mathrm {sum \:=\:(-1)(1 + 2 + 3 + 4 + \ dotsm \:+(n-1)+ n)} $
$ \ mathrm {sum \:=\:(-1)\:* \:\ begin {bmatrix} \ frac {n *(n + 1)} {2} \ end {bmatrix}} $
Nが奇数の場合、
$ \ mathrm {sum \:=\:1 ^ 2 \:-\:2 ^ 2 \:+ \:3 ^ 2 \:-\:4 ^ 2 \:+ \:\ dotsm \:+ \ :( n-2)^ 2 \ :-( n-1)^ 2 \:+ \:n ^ 2} $
$ \ mathrm {sum \:=\:(1 ^ 2 \:-\:2 ^ 2 \:+ \:3 ^ 2 \:-\:4 ^ 2 \:+ \:\ dotsm \:+ \: (n-2)^ 2 \ :-( n-1)^ 2)\:+ \:n ^ 2} $
$ \ mathrm {sum \:=\:\ lbrace(-1)\:* [\ frac {n *(n + 1)} {2}] \ rbrace \:+ \:n ^ 2} $
>$ \ mathrm {sum \:=\:(\ frac {-n ^ 2 \:+ \:n \:+ \:2n ^ 2} {2})} $
$ \ mathrm {sum \:=\:(n + n ^ 2)/ 2 \:=\:n ^ *(n + 1)/ 2} $
例
ソリューションの動作を説明するプログラム
#include <iostream> using namespace std; int findSumOfSeries(int n) { int sum = 0; if(n % 2 == 0){ sum = (-1)*(n*(n+1))/2; } else { sum = (n*(n+1))/2; } return sum; } int main(void) { int n = 5; cout<<"The sum of series is "<<findSumOfSeries(n); }
出力
The sum of series is 15
-
C++のツリーで最大のサブツリーの合計を検索します
この問題では、二分木が与えられます。私たちのタスクは、ツリー内で最大のサブツリーの合計を見つけることです。 問題の説明: 二分木は、正の値と負の値で構成されます。そして、ノードの合計が最大のサブツリーを見つける必要があります。 問題を理解するために例を見てみましょう。 出力: 13 説明: 左サブツリーの合計は7です 右サブツリーの合計は1です ツリーの合計は13です ソリューションアプローチ この問題を解決するために、ポストオーダートラバーサルを実行します。ノードの左側のサブツリーと右側のサブツリーの合計を計算します。現在のノードについて、現在のノードの
-
シリーズ23+45+75+…..最大N項の合計を求めるC++プログラム
このチュートリアルでは、与えられたシリーズの合計を見つけるプログラムについて説明します23+45+75+…..最大N項。 このために、Nの値が与えられます。私たちのタスクは、最初の項から始まるすべての項を合計して、与えられた系列の合計を見つけることです。 これを解いた後、級数の合計の式を取得します; Sn =(2n(n + 1)(4n + 17)+ 54n)/ 6 例 #include <iostream> using namespace std; //calculating the sum of the series int calc_sum(int N) { &n