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

C++로 두 정수 A와 B 사이의 N개 기하 평균 구하기

세 개의 정수 A, B, N이 주어졌을 때, A와 B 사이에 존재하는 N개의 기하 평균(등비 중항)을 구하는 것이 목표입니다. 예를 들어 A = 2, B = 32, N = 3이라면 출력 결과는 4, 8, 16이 됩니다.

문제 접근 방법

이 문제는 생각보다 간단합니다. A를 첫째 항으로, B를 마지막 항으로 하는 등비수열에 N개의 항을 삽입하면 됩니다. G1, G2, …, Gn을 n개의 기하 평균이라고 하면 전체 수열은 다음과 같이 표현됩니다.

A, G1, G2, …, Gn, B

여기서 B는 이 수열의 (N + 2)번째 항에 해당합니다. 따라서 아래 공식들을 활용하여 공비 R을 구할 수 있습니다.

$$B=A*R^{N+1}$$

$$R^{N+1}=\frac{B}{A}$$

$$R=\lgroup \frac{B}{A}\rgroup^{\frac{1}{N+1}}$$

공비 R을 구한 뒤에는 A * R^i (i = 1부터 N까지)를 차례대로 계산하면 A와 B 사이의 모든 기하 평균을 얻을 수 있습니다.

C++ 구현 예제

#include<iostream>
#include<cmath>
using namespace std;
void showMeans(int A, int B, int N) {
    float R = (float)pow(float(B / A), 1.0 / (float)(N + 1));
    for (int i = 1; i <= N; i++)
    cout << (A * pow(R, i)) << " ";
}
int main() {
    int A = 3, B = 81, N = 2;
    showMeans(A, B, N);
}

실행 결과

9 27

위 예제에서 A = 3, B = 81, N = 2인 경우, 공비 R은 (81/3)^(1/3) = 27^(1/3) = 3이 되므로 3과 81 사이의 기하 평균인 9와 27이 출력됩니다. 이처럼 등비수열의 성질을 이용하면 반복 계산 없이도 원하는 개수의 기하 평균을 효율적으로 구할 수 있습니다.