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

합의 비율이 주어졌을 때 등차수열(A.P.)의 m번째 항과 n번째 항의 비율 구하기 (C++)

문제 개요

이번 글에서는 등차수열(Arithmetic Progression, A.P.)에서 처음 m개 항의 합과 처음 n개 항의 합의 비율이 주어졌을 때, m번째 항과 n번째 항의 비율을 구하는 문제를 다뤄보겠습니다.

입력: m = 8, n = 4
출력: 2.142

입력: m = 3, n = 2
출력: 1.666

입력: m = 7, n = 3
출력: 2.6

해결 접근 방법

m번째 항과 n번째 항의 비율을 코드로 계산하려면 먼저 수식을 간단하게 정리해야 합니다. 등차수열의 처음 m개 항의 합을 Sm, 처음 n개 항의 합을 Sn이라고 정의하겠습니다.

  • a : 첫째 항
  • d : 공차(공통 차이)

문제에서 주어진 조건은 다음과 같습니다.

Sm / Sn = m² / n²

등차수열의 합 공식은 다음과 같습니다.

Sm = (m/2)[2a + (m−1)d]

이를 주어진 조건에 대입하면,

m² / n² = (m/2)[2a + (m−1)d] / (n/2)[2a + (n−1)d]

양변을 정리하면,

m / n = [2a + (m−1)d] / [2a + (n−1)d]

교차 곱셈(cross multiplication)을 적용하면,

n[2a + (m−1)d] = m[2a + (n−1)d]

전개하여 정리하면,

2an + mnd − nd = 2am + mnd − md
2an − 2am = nd − md
(n − m)·2a = (n − m)·d

양변을 (n − m)으로 나누면 다음 결론을 얻습니다.

d = 2a

m번째 항과 n번째 항의 비율 유도

등차수열의 m번째 항 공식은 다음과 같습니다.

Tm = a + (m−1)d

따라서 m번째 항과 n번째 항의 비율은,

Tm / Tn = [a + (m−1)d] / [a + (n−1)d]

여기서 앞서 구한 d = 2a를 대입하면,

Tm / Tn = [a + (m−1)·2a] / [a + (n−1)·2a]
= a(1 + 2m − 2) / a(1 + 2n − 2)

최종적으로 아주 간단한 공식이 완성됩니다.

Tm / Tn = (2m − 1) / (2n − 1)

이제 복잡한 계산 없이 m과 n 값만으로 두 항의 비율을 바로 구할 수 있습니다. 이 공식을 활용한 C++ 코드를 살펴보겠습니다.

C++ 구현 예제

#include <bits/stdc++.h>
using namespace std;
int main(){
    float m = 8, n = 4;
    // 공식을 적용하여 비율 계산
    float result = (2 * m - 1) / (2 * n - 1);
    cout << "m번째 항과 n번째 항의 비율: " << result;
    return 0;
}

실행 결과

m번째 항과 n번째 항의 비율: 2.14286

m = 8, n = 4를 대입하면 (2×8 − 1) / (2×4 − 1) = 15 / 7 ≈ 2.14286으로, 예상 출력과 일치하는 것을 확인할 수 있습니다.

마무리

이 튜토리얼에서는 등차수열의 합의 비율이 주어졌을 때 m번째 항과 n번째 항의 비율을 구하는 문제를 다뤘습니다. m항의 합 공식과 m번째 항 공식을 수학적으로 전개하고 간소화함으로써, (2m − 1) / (2n − 1)이라는 간단한 공식을 도출했습니다. 이 접근법은 C++뿐만 아니라 C, Java, Python 등 어떤 프로그래밍 언어로도 손쉽게 구현할 수 있습니다. 이 글이 여러분의 학습에 도움이 되기를 바랍니다.