数列1, 4, 27, 16, 125, 36, 343…のn番目の項を求めるC++プログラム
この記事では、整数Nが与えられたときに、次の数列のn番目の項を求める方法を解説します。
対象となる数列: 1, 4, 27, 16, 125, 36, 343…
問題の例
入力
N = 7
出力
343
説明
N = 7 の場合、数列の7番目の項は 343 となります。
解法アプローチ
この問題を効率的に解くには、数列の規則性(一般項)を見つけることが重要です。この数列をよく観察すると、奇数番目の項と偶数番目の項という2つの異なるパターンが交互に現れていることがわかります。
- 偶数番目の項: インデックスの2乗(例: 2²=4, 4²=16, 6²=36)
- 奇数番目の項: インデックスの3乗(例: 1³=1, 3³=27, 5³=125, 7³=343)
つまり、現在の位置Nが偶数なら N×N を、奇数なら N×N×N を返すだけで答えが求まります。ループを使って数列を順に生成する必要はなく、O(1) の計算量で即座にn番目の項を計算できるのがポイントです。
C++プログラムの実装例
#include <iostream>
using namespace std;
// 数列のn番目の項を求める関数
int findNthTerm(int N) {
// 偶数番目なら2乗、奇数番目なら3乗を返す
if (N % 2 == 0)
return (N * N);
return (N * N * N);
}
int main() {
int N = 8;
cout << "The " << N << "th term of the series is " << findNthTerm(N);
return 0;
}実行結果
The 8th term of the series is 64
まとめ
このプログラムでは、N = 8(偶数)なので 8 × 8 = 64 が出力されます。数列全体を生成せずに、Nの偶奇を判定して直接計算するため、時間計算量は O(1)、空間計算量も O(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」のみで構成されている。 各項の末尾の
-
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