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

C++에서 주어진 둘레와 면적으로 직육면체의 최대 부피 구하기

면적 A와 둘레 P가 주어졌을 때, 이 두 값을 만족하는 직육면체가 가질 수 있는 최대 부피를 구하는 방법을 알아보겠습니다. 예를 들어 둘레 P가 24이고 면적 A가 24일 때, 만들 수 있는 직육면체의 최대 부피는 8입니다.

기본 공식 정리

직육면체의 세 변을 각각 길이(length), 너비(breadth), 높이(depth)라고 할 때, 둘레·겉넓이·부피는 다음과 같이 정의됩니다.

  • 둘레: P = 4 × (길이 + 너비 + 높이)
  • 겉넓이: A = 2 × (길이×너비 + 너비×높이 + 길이×높이)
  • 부피: V = 길이 × 너비 × 높이

최대 부피 유도 과정

둘레 조건에서 '길이 + 너비 + 높이 = P/4'임을 알 수 있고, 겉넓이 조건에서 '길이×너비 + 너비×높이 + 길이×높이 = A/2'임을 알 수 있습니다. 여기서 너비와 높이를 길이에 대한 식으로 치환하면, 부피 V를 길이 하나의 변수만으로 표현할 수 있습니다.

이렇게 정리된 부피 함수를 미분하여 극댓값을 구하면, 최대 부피를 만드는 한 변의 길이는 다음과 같습니다.

length = (P − √(P² − 24A)) / 12

이 값을 부피 공식에 대입하면 최대 부피는 다음과 같이 계산됩니다.

V = length × (A/2 − length × (P/4 − length))

C++ 구현 예제

#include <iostream>
#include <cmath>
using namespace std;

float maxVolumeCuboid(float Peri, float Area) {
    float length = (Peri - sqrt(Peri * Peri - 24 * Area)) / 12;
    float Vol = length * (Area / 2.0 - length * (Peri / 4.0 - length));
    return Vol;
}

int main() {
    float P = 20, A = 16;
    cout << "Maximum volume of the cuboid will be: " << maxVolumeCuboid(P, A);
}

실행 결과

Maximum volume of the cuboid will be: 4.14815

위 예제에서는 둘레 P = 20, 면적 A = 16일 때 최대 부피 약 4.14815가 계산됩니다. 이처럼 주어진 둘레와 면적만으로도 닫힌 형태의 수식을 활용하면 반복문 없이 상수 시간 O(1) 안에 직육면체의 최대 부피를 빠르게 구할 수 있다는 장점이 있습니다.