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

C++로 두 수 A와 B 사이의 N개 산술 평균(등차중항) 구하기

세 개의 정수 A, B, N이 주어졌을 때, A와 B 사이에 존재하는 N개의 산술 평균(등차중항)을 구하는 문제입니다.

예를 들어 A = 20, B = 32, N = 5라면, 출력 결과는 22, 24, 26, 28, 30이 됩니다.

문제 접근 방법

이 작업은 본질적으로 간단합니다. A를 첫째 항으로, B를 마지막 항으로 하는 등차수열의 중간에 N개의 항을 삽입하면 됩니다. 삽입되는 산술 평균들을 A₁, A₂, …, Aₙ이라고 하면 전체 수열은 다음과 같은 형태가 됩니다.

A, A₁, A₂, …, Aₙ, B

여기서 B는 이 수열의 (N + 2)번째 항입니다. 따라서 등차수열의 성질을 이용하면 다음과 같이 공차 d를 유도할 수 있습니다.

$$B=A+(N+2-1)\times d$$

$$B-A=(N+2-1)\times d$$

$$d=\frac{B-A}{(N+2-1)}$$

즉, 공차는 (B − A) ÷ (N + 1)이 되며, 첫째 항 A에서부터 공차를 반복해서 더해가면 원하는 N개의 산술 평균을 차례대로 얻을 수 있습니다.

C++ 구현 예제

#include<iostream>
using namespace std;
void showMeans(int A, int B, int N) {
   float d = (float)(B - A) / (N + 1);
   for (int i = 1; i <= N; i++)
      cout << (A + i * d) <<" ";
}
int main() {
   int A = 20, B = 40, N = 5;
   showMeans(A, B, N);
}

실행 결과

23.3333 26.6667 30 33.3333 36.6667

위 코드에서 공차 d를 계산할 때 정수 나눗셈의 오차를 방지하기 위해 float 형변환을 사용했다는 점에 유의하세요. 덕분에 A와 B가 공차로 나누어 떨어지지 않는 경우에도 소수점 결과를 정확하게 출력할 수 있습니다.