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

C++で数列 2、12、36、80、150… の n 番目の項を求める方法


本記事で扱う数列は「2, 12, 36, 80, 150, …」です。

この数列をよく観察すると、n 番目の項が n2 + n3 という式で表せることに気づきます。実際に確認してみましょう。

  • n = 1 のとき: 12 + 13 = 1 + 1 = 2
  • n = 2 のとき: 22 + 23 = 4 + 8 = 12
  • n = 3 のとき: 32 + 33 = 9 + 27 = 36
  • n = 4 のとき: 42 + 43 = 16 + 64 = 80
  • n = 5 のとき: 52 + 53 = 25 + 125 = 150

このように、各項は「n の 2 乗と n の 3 乗の和」になっていることが確かめられます。つまり、任意の n 番目の項を一つの公式から直接計算できます。

アルゴリズム

  • 求めたい項の番号 N を用意します。
  • 数列の一般項の公式(n2 + n3)を使って n 番目の項を計算します。
  • 結果を出力します。

実装

以下は、上記のアルゴリズムを C++ で実装した例です。

#include <bits/stdc++.h>

using namespace std;

int getNthTerm(int n) {
    return (n * n) + (n * n * n);
}
int main() {
    int n = 7;
    cout << getNthTerm(n) << endl;
    return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

392

n = 7 の場合、72 + 73 = 49 + 343 = 392 となるため、公式どおりの正しい結果が出力されていることがわかります。このアプローチを使えば、ループで各項を順に足し合わせることなく、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