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

C++で級数「9, 45, 243, 1377, …」の第N項を求める方法


この問題では、整数値 N が与えられます。私たちのタスクは、次の級数の第N項を求めることです。

9, 45, 243, 1377, 8019, …

問題の理解

まず、具体例を使って問題を確認しましょう。

入力 : N = 4
出力 : 1377

N = 4 の場合、級数の4番目の項である 1377 が出力されれば正解となります。

解法アプローチ

この問題に対するシンプルな解法は、級数を観察して一般項(第N項の式)を導出することです。各項を注意深く観察すると、次のようなパターンが見えてきます。

(1n + 2n) × 3n

実際に検証してみましょう。

  • n = 1 の場合 : (11 + 21) × 31 = 3 × 3 = 9
  • n = 2 の場合 : (12 + 22) × 32 = 5 × 9 = 45
  • n = 3 の場合 : (13 + 23) × 33 = 9 × 27 = 243
  • n = 4 の場合 : (14 + 24) × 34 = 17 × 81 = 1377

このように、すべての項が一般式 (1n + 2n) × 3n で表せることが確認できます。

サンプルプログラム

上記の解法を実装したC++プログラムを以下に示します。

#include <iostream>
#include <math.h>
using namespace std;
long findNthTermSeries(int n){
    return ((pow(1, n) + pow(2, n)) * pow(3, n));
}
int main(){
    int n = 4;
    cout<<n<<"番目の項の値は "<<findNthTermSeries(n);
    return 0;
}

実行結果

4番目の項の値は 1377

コードの解説

関数 findNthTermSeries() では、math.h ヘッダーの pow() 関数を使用して 1n、2n、3n をそれぞれ計算し、それらを組み合わせて一般項 (1n + 2n) × 3n を求めています。main() 関数では n = 4 を設定して関数を呼び出し、計算結果を出力しています。このアプローチにより、任意の N に対して級数の第N項を効率的に求めることができます。

  1. C++でf[i] = f[i-1] − f[i-2]という規則に従う数列のN番目の項を求める方法

    数列 f の各項が f[i] = f[i-1] − f[i-2] という規則に従うとき、初項 f[0] = X、第2項 f[1] = Y が与えられた場合に、この数列のN番目の項を求める問題を考えます。例えば、X = 2、Y = 3、N = 3 のとき、答えは -2 になります。実際に順番に計算してみると、f[0] = 2、f[1] = 3、f[2] = 3 − 2 = 1、f[3] = 1 − 3 = −2 となるためです。周期性に着目した効率的な解法この数列を詳しく観察すると、6項ごとに同じパターンが繰り返されるという重要な性質があります。つまり、最初の6項さえ求めてしまえば、N番目の項は

  2. C++でドラゴン曲線シーケンスのn番目の項を求める方法

    この記事では、ドラゴン曲線(Dragon Curve)シーケンスのn番目の項を求めるC++プログラムを紹介します。ドラゴン曲線シーケンスとは、無限に続く二進列(0と1のみで構成される数列)のことで、「1」から始まり、各ステップで前の項の各要素に対して「1」と「0」を交互に追加していくことで次の項を形成していきます。 第1項: 1 第2項: 110 第3項: 1101100 第4項: 110110011100100 まず「1」から始め、前の項の各要素の後に「1」と「0」を交互に付け加えていきます。新しい項が得られたら、それを現在の項として同じ手順をn回繰り返すことで、目的の項を生成できます