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

C++로 혼합물의 목표 비율을 맞추기 위해 추가해야 할 물의 양 구하기

크기가 X인 용기에 물과 다른 액체가 섞여 있는 혼합물이 들어 있다고 가정해 봅시다. 이 혼합물에는 물이 W% 포함되어 있습니다. 이때 물의 비율을 Y%까지 높이려면 물을 얼마나 더 넣어야 할까요?

예를 들어 X = 125, W = 20, Y = 25라면, 결과는 약 8.33리터가 됩니다.

수식 유도

기존 혼합물에 A만큼의 물을 추가한다면, 새로운 총량은 X + A가 됩니다. 따라서 혼합물 속 물의 양은 다음 공식으로 표현할 수 있습니다.

기존 물의 양 + A = (X의 W%) + A

동시에 새로운 혼합물에서 물의 양은 전체의 Y%와 같아야 하므로, 다음 등식이 성립합니다.

(X + A)의 Y% = (X의 W%) + A

이 식을 A에 대해 정리하면 다음과 같은 공식을 얻을 수 있습니다.

A = [X × (Y − W)] / [100 − Y]

C++ 구현 예제

#include<iostream>
using namespace std;

float getWaterAmount(float X, float W, float Y) {
    return (X * (Y - W)) / (100 - Y);
}

int main() {
    float X = 125, W = 20, Y = 25;
    cout << "We need " << getWaterAmount(X, W, Y) << " liters of water";
}

실행 결과

We need 8.33333 liters of water

코드 설명

위 코드에서 getWaterAmount 함수는 유도한 공식 그대로 (X * (Y - W)) / (100 - Y)를 계산하여 필요한 물의 양을 반환합니다. 예제 입력값(X = 125, W = 20, Y = 25)을 대입하면, 125 × (25 − 20) ÷ (100 − 25) = 625 ÷ 75 ≈ 8.33리터라는 결과가 나옵니다.

이 공식은 용기의 크기와 초기·목표 비율만 알면 즉시 답을 구할 수 있어, 시간 복잡도 O(1)로 매우 효율적입니다.