C++で数列 1、11、55、239、991、… のN番目の項を求める方法
本記事では、数列 1, 11, 55, 239, 991, … のN番目の項をC++で求める方法を解説します。
この数列をよく観察すると、各項は次の一般項(公式)で表せることがわかります。
n番目の項 = 4n − 2n − 1
実際に確認してみましょう。
- n = 1 のとき: 41 − 21 − 1 = 4 − 2 − 1 = 1
- n = 2 のとき: 42 − 22 − 1 = 16 − 4 − 1 = 11
- n = 3 のとき: 43 − 23 − 1 = 64 − 8 − 1 = 55
このように、公式が数列のすべての項と一致していることが確認できます。
アルゴリズム
- 項数 N を初期化します。
- 数列の一般項の公式を使って N 番目の項を計算します。
- 計算結果を出力します。
C++での実装
以下は、上記のアルゴリズムをC++で実装した例です。
#include <bits/stdc++.h>
using namespace std;
int getNthTerm(int n) {
int num = pow(4, n) - pow(2, n) - 1;
return num;
}
int main() {
int n = 7;
cout << getNthTerm(n) << endl;
return 0;
}
出力結果
上記のコードを実行すると、以下の結果が出力されます。
16255
n = 7 の場合、47 − 27 − 1 = 16384 − 128 − 1 = 16255 となり、正しく計算できていることがわかります。
まとめ
数列 1, 11, 55, 239, 991, … のN番目の項は、一般項 4n − 2n − 1 を使うことで、O(1) の計算量で求められます。べき乗の計算には標準ライブラリの pow 関数を利用するのが簡単で便利です。
-
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