C++で数列 0, 7, 8, 33, 51, 75, 102, 133… のN番目の項を求めるプログラム
この記事では、数列 0、7、8、33、51、75、102、133… のN番目の項を求めるC++プログラムについて解説します。
具体的には、ある数値Nが与えられたとき、その位置に対応する数列の項を求めることが課題となります。
数列の一般項
この数列は、次の一般項(N番目の項を求める式)で表すことができます。
N番目の項 = 2 × N2 + N − 3
実際に値を代入して確認してみましょう。
- N = 1 のとき:2 × 1 + 1 − 3 = 0
- N = 2 のとき:2 × 4 + 2 − 3 = 7
- N = 4 のとき:2 × 16 + 4 − 3 = 33
このように、一般項の式を使えばループ処理を行わなくても、任意の位置の項を一度の計算で(計算量O(1)で)求められます。
サンプルコード
C++での実装例を以下に示します。
#include <iostream>
#include <math.h>
using namespace std;
// 数列のN番目の項を計算する関数
int nthTerm(int n) {
return 2 * pow(n, 2) + n - 3;
}
int main() {
int N = 4;
cout << nthTerm(N) << endl;
return 0;
}
出力結果
33
コードの解説
nthTerm 関数では、一般項の式「2 × N2 + N − 3」をそのまま実装しています。pow(n, 2) によってNの2乗を計算し、式に代入することでN番目の項を求めています。
上記の例では N = 4 を渡しているため、出力は 33 となります。異なるNの値を指定すれば、その位置の項も同様に取得できます。
-
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」のみで構成されている。 各項の末尾の
-
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