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

C++로 수열 0, 11, 28, 51, 80, 115, 156, 203, …의 N번째 항 구하기

문제 개요

이 문제에서는 하나의 숫자 N이 주어지며, C++로 수열 0, 11, 28, 51, 80, 115, 156, 203, …의 N번째 항을 구하는 프로그램을 작성하는 것이 목표입니다.

문제 설명

주어진 수열의 N번째 항을 계산하여 출력해야 합니다.

예제로 이해하기

입력: N = 5
출력: 80

설명: 수열의 다섯 번째 항은 80입니다.

해결 접근 방법

수열에서 인접한 항들 사이의 차이를 살펴보면 11, 17, 23, 29, 35, …로 일정하게 6씩 증가합니다. 두 번째 차분이 일정하다는 것은 이 수열이 이차식(2차 다항식)으로 표현될 수 있음을 의미합니다.

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

Tn = 3 × N² + 2 × N − 5

검산해 보면 N = 1일 때 3 + 2 − 5 = 0, N = 2일 때 12 + 4 − 5 = 11로 실제 수열과 정확히 일치합니다.

구현 예제

#include <iostream>
using namespace std;

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

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

출력 결과

9th term of the series is 256

코드 설명

findNTerm 함수는 일반항 공식에 N을 대입하여 N번째 항을 계산한 뒤 반환합니다. main 함수에서는 N = 9를 대입해 아홉 번째 항인 256을 출력합니다.

시간 및 공간 복잡도

공식에 값을 대입하기만 하면 되므로 시간 복잡도는 O(1)이며, 별도의 추가 메모리를 사용하지 않으므로 공간 복잡도 역시 O(1)입니다.