이 문제에서는 하나의 수 N이 주어지며, 우리의 목표는 C++를 사용하여 수열 3, 5, 21, 51, 95, ...의 N번째 항을 구하는 프로그램을 작성하는 것입니다.
문제 설명
주어진 수열은 다음과 같습니다.
3, 5, 21, 51, 95, 153, ... (N개의 항)
각 항 사이의 증가 폭이 일정하게 늘어나는 패턴을 보이므로, 이 수열의 일반항은 이차식(2차 다항식) 형태로 표현할 수 있습니다. 따라서 먼저 수열의 일반항 공식을 찾아야 합니다.
예제로 문제 이해하기
입력 − N = 6
출력 − 153
일반항 공식 유도하기
수열의 인접한 항들끼리의 차이를 살펴보면 다음과 같습니다.
- 첫 번째 차이: 2, 16, 30, 44, 58, ...
- 두 번째 차이: 14, 14, 14, 14, ... (일정)
두 번째 차이가 일정하다는 것은 이 수열이 이차식임을 의미합니다. 두 번째 차이가 14이므로 이차항의 계수는 14 ÷ 2 = 7입니다. 나머지 계수를 초기 조건에 대입하여 구하면 최종적으로 다음과 같은 일반항 공식을 얻을 수 있습니다.
Tn = 7 × n² − 19 × n + 15
해결 접근 방법
- N 값을 입력받습니다.
- 공식 Tn = 7 × n² − 19 × n + 15에 N을 대입합니다.
- 계산된 결과를 N번째 항으로 출력합니다.
예제 코드
#include <iostream>
using namespace std;
int findNTerm(int N) {
int nthTerm = ((7 * (N * N)) - (19 * N) + 15);
return nthTerm;
}
int main() {
int N = 7;
cout << "수열의 " << N << "번째 항은 " << findNTerm(N);
return 0;
}실행 결과
수열의 7번째 항은 225
코드 설명
findNTerm() 함수는 주어진 N에 대해 일반항 공식을 그대로 적용하여 결과를 계산합니다. 예를 들어 N = 7인 경우, 7 × 49 − 19 × 7 + 15 = 343 − 133 + 15 = 225가 되므로 올바른 결과를 출력합니다.
이 접근 방식의 시간 복잡도는 O(1)로, 반복문 없이 단 한 번의 연산만으로 N번째 항을 즉시 구할 수 있다는 장점이 있습니다.