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

C++で数列 1, 17, 98, 354, … の n 番目の項を求める方法

今回扱う数列は「1, 17, 98, 354, …」です。この数列を注意深く観察すると、n 番目の項が「4乗の累積和」で表されていることがわかります。具体的なパターンを見てみましょう。

1   = 1^4
17  = 1^4 + 2^4
98  = 1^4 + 2^4 + 3^4
354 = 1^4 + 2^4 + 3^4 + 4^4
...

つまり、n 番目の項は「1 から n までの各整数の4乗をすべて足し合わせた値」になります。

アルゴリズム

  • 求めたい項番号 n を用意します。
  • 結果を格納する変数を 0 で初期化します。
  • 1 から n まで繰り返すループを作成します。
    • 現在の数の4乗を結果に加算していきます。
  • 最終的な結果を出力します。

この方法の計算量は O(n) とシンプルです。なお、4乗和の閉形式の公式を使えば O(1) で求めることもできますが、ここでは理解しやすさを優先してループによる実装を紹介します。

C++での実装

上記のアルゴリズムをC++で実装すると、次のようになります。

#include <bits/stdc++.h>

using namespace std;

int getNthTerm(int n) {
    int nthTerm = 0;
    for (int i = 1; i <= n; i++) {
        nthTerm += i * i * i * i;
    }
    return nthTerm;
}

int main() {
    int n = 7;
    cout << getNthTerm(n) << endl;
    return 0;
}

実行結果

上記のコードを実行すると、以下の出力が得られます。

4676

この例では n = 7 としているため、「1^4 + 2^4 + … + 7^4 = 4676」が正しく計算できていることが確認できます。

  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