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

C++로 혼합물 교체 후 남은 우유의 양 구하기

이 튜토리얼에서는 혼합물을 반복적으로 교체한 후 남은 우유의 양을 계산하는 프로그램을 다뤄보겠습니다.

문제 설명

용기에 X리터의 우유가 들어 있다고 가정해 봅시다. 여기서 Y리터의 우유를 꺼내고, 같은 양인 Y리터의 물을 채워 넣습니다. 이 과정을 총 Z번 반복한다면, 최종적으로 용기 안에 남아 있는 우유의 양은 얼마일까요?

접근 방법

반복되는 연산 사이의 규칙성을 분석하면, Z번의 교체 작업 후 남은 우유의 양은 아래 공식으로 구할 수 있습니다.

남은 우유의 양 = ((X − Y) / X)Z × X

즉, 매번 전체 부피 중 우유가 차지하는 비율이 ((X − Y) / X)만큼 곱해지는 원리입니다. 이 비율을 Z번 거듭제곱한 뒤 초기 용량 X를 곱하면 최종 결과를 얻을 수 있습니다.

예제 코드

#include <bits/stdc++.h>
using namespace std;

// 최종 남은 우유의 양을 계산하는 함수
float calc_milk(int X, int Y, int Z) {
    float result = 0.0, result1 = 0.0;
    result1 = ((X - Y) / (float)X);
    result = pow(result1, Z);
    result = result * X;
    return result;
}

int main() {
    int X = 13, Y = 2, Z = 5;
    cout << calc_milk(X, Y, Z) << endl;
    return 0;
}

실행 결과

5.63884

코드 설명

위 예제에서는 초기 우유 13리터 중 매번 2리터씩 물로 교체하며, 이 과정을 5번 반복합니다. calc_milk 함수는 먼저 한 번의 교체 후 우유가 유지되는 비율인 (13 − 2) / 13 ≈ 0.8462를 계산하고, 이를 5제곱한 값에 초기 용량 13을 곱해 약 5.64리터라는 결과를 반환합니다.

주의할 점은 정수 나눗셈 오류를 방지하기 위해 (float)X처럼 형 변환을 명시적으로 해주었다는 것입니다. 만약 형 변환 없이 계산하면 정수 나눗셈이 수행되어 잘못된 결과가 나올 수 있습니다.