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

C++で数列0、10、30、60、100、150、210、280のN番目の項を求めるプログラム

このチュートリアルでは、数列「0、10、30、60、100、150、210、280…」のN番目の項を求めるC++プログラムについて解説します。
与えられた整数Nをもとに、数列の中でその位置に相当する項の値を計算するのが課題です。

数列の一般項

この数列には明確な規則性があり、次の一般式で表すことができます。

a(n) = 5 × n² − 5 × n = 5n(n − 1)

実際に確認してみると、n=1のとき0、n=2のとき10、n=3のとき30、n=4のとき60となり、与えられた数列と一致します。つまり、N番目の項を求めるにはループで項を順に生成する必要はなく、この式にNを代入して直接計算できます。計算量はO(1)で済むため、非常に効率的なアプローチです。

プログラム例

#include <iostream>
#include <math.h>
using namespace std;

// 数列の第n項を計算する
int nthTerm(int n) {
    return 5 * pow(n, 2) - 5 * n;
}

int main() {
    int N = 4;
    cout << nthTerm(N) << endl;
    return 0;
}

出力

60

コードの解説

nthTerm関数では、pow関数でnの2乗を求め、それに5を掛けた値から5nを引くことで第n項を計算しています。main関数からN=4を渡しているため、出力結果は60になります。

なお、pow関数は浮動小数点演算を行うため、わずかな誤差や処理のオーバーヘッドが生じる可能性があります。整数のみを扱う場合は、「return 5 * n * (n - 1);」のように乗算だけで記述した方が高速かつ確実です。

  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