이 문제에서는 숫자 N이 주어지며, C++을 사용하여 수열 3, 12, 29, 54, 87, ...의 N번째 항을 구하는 프로그램을 작성하는 것이 목표입니다.
주어진 수열은 다음과 같습니다.
3, 12, 29, 54, 87, 128, ... (N개의 항)
문제 이해를 위한 예시
입력: N = 5
출력: 87
해결 접근 방법
먼저 주어진 수열의 일반항(일반식)을 유도해 보겠습니다. 수열은 다음과 같습니다.
3, 12, 29, 54, 87, 128, ...
각 항 사이의 차이를 분석해 보면 9, 17, 25, 33...으로 등차가 8인 패턴을 보이며, 이를 통해 다음과 같은 일반항 공식을 도출할 수 있습니다.
Tn = 4n² - 3n + 2
이 일반항 공식을 사용하면 수열의 어떤 값이든 쉽게 계산할 수 있습니다.
예를 들어,
T8 = 4 × (8²) - 3 × 8 + 2
T8 = 4 × 64 - 24 + 2
T8 = 234
구현 예제 코드
#include <iostream>
using namespace std;
int findNTerm(int N) {
int nthTerm = ((4 * N * N) - (3 * N) + 2);
return nthTerm;
}
int main() {
int N = 7;
cout << N << "번째 항의 값은 " << findNTerm(N) << " 입니다";
return 0;
}
실행 결과:
7번째 항의 값은 177 입니다
코드 설명
위 코드의 findNTerm 함수는 일반항 공식 4N² - 3N + 2를 그대로 구현한 것입니다. 함수에 원하는 항의 번호 N을 전달하면 해당 위치의 수열 값을 계산하여 반환합니다. 시간 복잡도는 O(1)로, 매우 큰 N에 대해서도 즉시 결과를 얻을 수 있다는 장점이 있습니다.