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

수열 1, 3, 6, 10, 15, 21…의 n번째 항을 구하는 C++ 프로그램

이 문제에서는 정수 N이 주어지며, 수열 1, 3, 6, 10, 15, 21, 28...에서 n번째 항을 찾아야 합니다.

예제로 문제 이해하기

입력

N = 7

출력

28

설명

수열은 1, 3, 6, 10, 15, 21, 28... 로 진행됩니다. 7번째 항은 28입니다.

해결 접근 방법

가장 간단한 방법은 수열의 일반항을 찾는 것입니다. 수열을 관찰해 보면 i번째 수는 (i-1)번째 항에 i를 더한 값이라는 규칙을 발견할 수 있습니다.

  • 1번째 항: 1
  • 2번째 항: 1 + 2 = 3
  • 3번째 항: 3 + 3 = 6
  • 4번째 항: 6 + 4 = 10

이처럼 1부터 n까지의 자연수를 모두 더한 값으로 정의되는 수를 삼각수(Triangular Number)라고 부릅니다.

이 문제는 반복문을 사용하여 효율적으로 해결할 수 있습니다. 1부터 n까지 반복하면서 매번 현재 인덱스 값을 누적 합계에 더하고, 최종적으로 N번째 항의 값을 반환하면 됩니다. 시간 복잡도는 O(N)입니다.

참고로 삼각수는 수학 공식 T(n) = n × (n + 1) / 2를 이용하면 반복문 없이 O(1)에도 계산할 수 있습니다.

솔루션 동작 예시 코드

#include <iostream>
using namespace std;

int findNthTerm(int N) {
    int NthTerm = 0;
    for (int i = 1; i <= N; i++)
        NthTerm = NthTerm + i;
    return NthTerm;
}

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

실행 결과

The 8th term of the series is 36

정리

위 프로그램은 반복문을 통해 1부터 N까지의 합을 구하는 방식으로 동작합니다. 예를 들어 N = 8일 경우 1 + 2 + 3 + ... + 8 = 36이므로 8번째 항은 36이 됩니다. 만약 입력 크기가 매우 크다면 공식 n * (n + 1) / 2를 활용하는 것이 더 효율적인 선택입니다.