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

数列 1, 1, 2, 6, 24, ... のN番目の項を求めるC++プログラム

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

1, 1, 2, 6, 24, ...

入力例

N = 7

出力例

720

解説

この数列は以下のように続きます。

1, 1, 2, 6, 24, 120, 720

各項が直前の項に1ずつ増える整数を掛けていることに注目すると、この数列は階乗で構成されていることがわかります。つまり、N番目の項は (N−1) の階乗に等しくなります。

解法アプローチ

この問題を解く最もシンプルな方法は、数列の一般項を表す公式を利用することです。

N番目の項 = (N−1)!

この公式を使えば、ループで1から (N−1) までの積を計算するだけで答えが求まります。計算量は O(N) と効率的です。

実装例

#include <iostream>
using namespace std;

int calcNthTerm(int N) {
    if (N <= 1)
        return 1;
    int factorial = 1;
    for (int i = 1; i < N; i++)
        factorial *= i;
    return factorial;
}

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

出力

8th term of the series is 5040

まとめ

このように、数列 1, 1, 2, 6, 24, ... のN番目の項は (N−1)! を計算するだけで簡単に求められます。なお、大きなNに対しては階乗の値が急激に大きくなるため、実際のプログラムではオーバーフローに注意し、必要に応じて long long 型や多倍長整数を使用することをおすすめします。

  1. C++で数列 3, 5, 21, 51, 95, … のN番目の項を求めるプログラム

    この記事では、数値Nが与えられたときに、C++を使って数列 3, 5, 21, 51, 95, … のN番目の項を求めるプログラムの作成方法を解説します。 問題の説明 次の数列のN番目の項を求めるのが課題です。 3, 5, 21, 51, 95, 153, …(N項まで) この数列は各項の増加パターンから、二次方程式(二次関数)に従うことがわかります。したがって、まず数列の一般項の公式を導き出す必要があります。 入出力例 入力: N = 6 出力: 153 解決アプローチ この問題を解くには、数列の一般項(第n項)の公式を求めます。この数列の一般項は、以下の二次式で表されます。 Tn = 7

  2. C++で指定された数列のN番目の項を求めるプログラム

    この問題では、数値 N が与えられ、指定された数列のN番目の項を求めるプログラムをC++で作成します。 問題の説明 次の数列のN番目の項を求めます。 1, 1, 2, 3, 4, 9, 8, 27, 16, 81, 32, 243, 64, 729, 128, 2187, 256, ... (N項まで) まずは、この数列の一般項(規則性)を見つけるところから始めます。 具体例で問題を確認してみましょう。 例1 入力: N = 6 出力: 9 例2 入力: N = 13 出力: 64 解法のアプローチ この問題を解くには、まず数列を注意深く観察する必要があります。この数列は複数の規則が混ざった「