Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 수열 2, 12, 28, 50, 77, 112, 152, 198, ...의 N번째 항 구하기

이 문제에서는 하나의 숫자 N이 주어지며, 우리의 목표는 수열 2, 12, 28, 50, 77, 112, 152, 198, ...의 N번째 항을 구하는 C++ 프로그램을 작성하는 것입니다.

문제 설명

주어진 수열은 다음과 같습니다.

2, 12, 28, 50, 77, 112, 152, 198, ... (N개의 항)

먼저 이 수열의 일반항(일반 공식)을 찾아야 합니다.

예제를 통한 이해

입력: N = 6

출력: 112

해결 접근 방법

수열의 값을 자세히 살펴보면 인접한 항 사이의 차이가 규칙적으로 증가하는 포물선(parabolic) 형태를 띠고 있습니다. 이러한 수열의 일반항은 일반적으로 이차방정식 형태로 표현할 수 있습니다.

실제로 각 항에 공식을 대입해 확인해 보면 다음과 같습니다.

  • N = 1 → 3×1² + 1 − 2 = 2
  • N = 2 → 3×2² + 2 − 2 = 12
  • N = 3 → 3×3² + 3 − 2 = 28
  • N = 4 → 3×4² + 4 − 2 = 50

따라서 이 수열의 일반항 공식은 다음과 같습니다.

TN = 3 × (N × N) + N − 2

솔루션 동작을 보여주는 프로그램

#include <iostream>
using namespace std;

int findNTerm(int N) {
   int nthTerm = ((3 * N * N) + N - 2);
   return nthTerm;
}

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

출력 결과:

10th term of the series is 308

위 코드는 findNTerm 함수에서 일반항 공식을 적용해 N번째 항을 계산한 뒤 반환합니다. main 함수에서는 N = 10을 입력으로 사용하며, 실행 결과 수열의 10번째 항인 308이 출력됩니다.

시간 복잡도 분석

이 솔루션은 단순히 공식에 값을 대입하기만 하므로 시간 복잡도는 O(1)입니다. 반복문 없이 상수 시간 안에 답을 구할 수 있어 매우 효율적입니다.