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

C++で数列7、21、49、91、147、217、……のN番目の項を求めるプログラム

この記事では、数列のN番目の項を表す整数nが与えられたとき、C++を使って数列「7、21、49、91、147、217、……」のN番目の項を求めるプログラムを作成します。

問題の説明

数列7、21、49、91、147、217、…のN番目の項を求めることが課題です。そのために、まず数列の一般項を導き出します。

入力例: N = 5

出力例: 147

解法アプローチ

与えられた数列を見てみましょう。

7, 21, 49, 91, 147, 217, …

すべての項には共通して7が含まれているため、7でくくり出すことができます。

7 × (1, 3, 7, 13, 21, 31, ...)

括弧内の数列を観察すると、各項が平方数との関連で増加していることがわかります。

数列:7 × (1², (2² − 1), (3² − 2), (4² − 3), (5² − 4), (6² − 5), ...)

この規則性から、数列の一般項は次の式で表せます。

Tn = 7 × (n² − (n − 1))

この一般項の公式を使えば、数列の任意の項の値を簡単に計算できます。

検算してみましょう:

T₄ = 7 × ((4²) − (4−1)) = 7 × (16 − 3) = 91
T₇ = 7 × ((7²) − (7−1)) = 7 × (49 − 6) = 301

どちらも実際の数列と一致しており、公式が正しいことが確認できました。

C++での実装例

#include <iostream>
using namespace std;
int findNTerm(int N) {
    int nthTerm = ( 7*((N*N) - (N - 1)) );
    return nthTerm;
}
int main() {
    int N = 9;
    cout<<N<<"番目の項の値は "<<findNTerm(N);
    return 0;
}

出力結果:

9番目の項の値は 511

コードの解説

関数findNTermは、導出した一般項の公式 Tn = 7 × (n² − (n−1)) をそのまま実装したものです。main関数でN = 9を渡すと、7 × (81 − 8) = 511 が計算され、正しい結果が出力されます。

この手法の計算量は、公式への代入のみで完結するため時間計算量O(1)、補助的な記憶領域も不要で空間計算量O(1)と非常に効率的です。ループで順に項を足し合わせる方法よりも、大きなNに対しても高速に動作します。

  1. C++で数列 1, 2, 11, 12, 21… のN番目の項を求めるプログラム

    この問題では、数値 N が与えられ、C++を用いて数列 1, 2, 11, 12, 21… のN番目の項を求めるプログラムを作成します。 問題の概要 次の数列のN番目の項を求めます。 1, 2, 11, 12, 21, 22, 111, 112, …(第N項まで) この数列には一定のパターンが隠されており、それをもとに一般項を導き出す必要があります。 具体例を見てみましょう。 入力 N = 8 出力 112 解法のアプローチ 一般項を導くためには、まず数列を注意深く観察することが重要です。この数列には次のような特徴があります。 すべての項が「1」と「2」のみで構成されている。 各項の末尾の

  2. C++で数列3、5、33、35、53…のN番目の項を求めるプログラム

    はじめにこのチュートリアルでは、数列「3、5、33、35、53…」のN番目の項を求めるC++プログラムについて解説します。この問題では、ある整数nが与えられます。私たちのタスクは、その数列におけるn番目の項を特定することです。数列の規則性まず、この数列がどのように構成されているのかを見てみましょう。1番目の項:32番目の項:53番目の項:33(1番目の項に「3」を付加)4番目の項:35(1番目の項に「5」を付加)5番目の項:53(2番目の項に「3」を付加)6番目の項:55(2番目の項に「5」を付加)つまり、奇数番目の項は「i/2 番目の項の末尾に3を付けた数」、偶数番目の項は「(i/2 − 1