C++で最初のn個の自然数のm番目の合計を求めます
この問題では、2つの整数mとnが与えられます。私たちの仕事は、最初のn個の自然数のm番目の合計を見つけることです。
問題の説明: n個の自然数の合計をm回求めます。合計は次の式で与えられます
if(m> 1)、
sum(n、m)=sum(sum(n、(m-1))、1)
if(m =1)
sum(n、m)=sum(n、1)=n個の自然数の合計
問題を理解するために例を見てみましょう。
入力: m =4、n =2
出力: 231
説明:
sum(2、4)=sum(sum(2、3)、1)
=合計(合計(合計(2、2)、1)、1)
=合計(合計(合計(合計(2、1)、1)、1)、1)
=合計(合計(合計(3、1)、1)、1)
=合計(合計(6、1)、1)
=合計(21、1)
=231
ソリューションアプローチ-
この問題の簡単な解決策は、2つのネストされたループを使用することです。外側の値はm値用で、内側の値はn値用です。 nの値を更新し、n個の自然数の合計をm回計算します。
より効果的なアプローチは、n個の自然数の合計をm回再帰的に呼び出し、再帰が行われるたびに前の合計で値を更新することです。
アルゴリズム:
ステップ1: 合計値をsum= sum(n、m-1)*(sum(n、m-1)+1)/ 2で更新します。 mの合計値が1より大きい場合。
ステップ2: m =1の場合、合計=n *(n + 1)/2を返します。
ステップ3: 合計を返します。
ソリューションの動作を説明するプログラム
例
#include <iostream> using namespace std; int calcSumN(int n, int m) { if (m == 1) return (n * (n + 1) / 2); return (calcSumN(n, m-1) * (calcSumN(n, m-1) + 1) / 2); } int main() { int n = 4; int m = 6; cout<<m<<"-th summation of first "<<n<<" natural numbers is "<<calcSumN(n, m); return 0; }
出力
6-th summation of first 4 natural numbers is 125230148
-
最初のn個の自然数の二乗和のためのC++プログラム?
この問題では、最初のn個の自然数の2乗の合計を取得する方法を確認します。ここでは、1からnまで実行されるforループを使用しています。各ステップで、項の2乗を計算し、それを合計に追加します。このプログラムは、完了するまでにO(n)時間かかります。しかし、これをO(1)または一定時間で解きたい場合は、この級数式-を使用できます。 アルゴリズム squareNNatural(n) begin sum := 0 for i in range 1 to n, do sum := sum + i^2 &
-
自然数の合計を計算するC++プログラム
自然数は1から始まる正の整数です。 自然数のシーケンスは-です 1, 2, 3, 4, 5, 6, 7, 8, 9, 10…… 最初のn個の自然数の合計は、forループまたは式を使用して計算できます。 これらの両方の方法を指定するプログラムは次のとおりです- forループを使用した自然数の合計。 forループを使用してn個の自然数の合計を計算するプログラムは次のとおりです。 例 #include<iostream> using namespace std; int main() { int n=5, sum=0, i;