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

C++で数列 1, 8, 54, 384, … のN番目の項を求めるプログラム

問題概要

この問題では、整数 N が与えられます。求めたいのは、次の数列の N番目の項 です。

1, 8, 54, 384, …

入出力の例

入力:

N = 4

出力:

384

説明: 数列の4番目の項は、4 × 4 × 4! = 384 と計算できます。

解法アプローチ

この問題を解く最もシンプルな方法は、数列の一般項(第N項)を表す公式を使うことです。各項は以下の式で求められます。

N番目の項 = N × N × (N!)

つまり、「Nの2乗」に「Nの階乗(N!)」を掛けた値が、そのまま答えになります。この規則性を見抜ければ、あとは単純な計算処理だけで任意の項を導き出せます。

C++での実装例

以下は、上記の解法を実際に実装したC++プログラムです。まず階乗を計算する関数を作り、それを利用してN番目の項を求めています。

#include <iostream>
using namespace std;

// 階乗を計算する関数
int calcFact(int N) {
    int fact = 1;
    for (int i = 1; i <= N; i++)
        fact = fact * i;
    return fact;
}

// N番目の項を計算する関数
int calcNthTerm(int N) {
    return (N * N * (calcFact(N)));
}

int main() {
    int N = 5;
    cout << N << "th term of the series is " << calcNthTerm(N);
    return 0;
}

実行結果

5th term of the series is 3000

まとめ

このように、階乗を計算する関数と一般項の公式 N × N × N! を組み合わせることで、数列の任意のN番目の項を簡単に求めることができます。計算量は階乗を求めるループ部分が中心となり、全体で O(N) 程度に収まるため、非常に効率的な解法といえます。

  1. 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

  2. C++でf[i] = f[i-1] − f[i-2]という規則に従う数列のN番目の項を求める方法

    数列 f の各項が f[i] = f[i-1] − f[i-2] という規則に従うとき、初項 f[0] = X、第2項 f[1] = Y が与えられた場合に、この数列のN番目の項を求める問題を考えます。例えば、X = 2、Y = 3、N = 3 のとき、答えは -2 になります。実際に順番に計算してみると、f[0] = 2、f[1] = 3、f[2] = 3 − 2 = 1、f[3] = 1 − 3 = −2 となるためです。周期性に着目した効率的な解法この数列を詳しく観察すると、6項ごとに同じパターンが繰り返されるという重要な性質があります。つまり、最初の6項さえ求めてしまえば、N番目の項は