Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 주어진 변의 합으로 직육면체의 부피 최대화


우리는 직육면체의 변의 합이 주어집니다. 직육면체는 세 변의 길이, 너비, 높이가 있습니다. 직육면체의 부피는 세 변의 곱으로 계산됩니다.

직육면체의 부피 =길이 X 너비 X 높이

3면이 최대한 가까이 있어야 최대 볼륨을 얻을 수 있습니다.

이제 예제를 사용하여 무엇을 해야 하는지 이해합시다 -

여기에 주어진 문제는 변의 합, 예를 들어 S를 제공합니다. 그리고 변을 L, B, H라고 합니다. 부피를 최대화하기 위해 가능한 한 가까운 변을 찾아야 합니다. S=6이라고 합시다. 가능한 측면은 -

[L=1,B=1,H=4] volume=4
[L=1,B=2,H=3] volume=6
[L=2,B=2,H=2] volume=8

참고 - 다른 조합은 동일한 결과를 가집니다. 따라서 L,B,H가 서로 가깝거나 같을 때 최대 볼륨이 달성됩니다.

따라서 −

입력 - S=6

출력 − 주어진 변의 합으로 직육면체의 최대 부피는 8입니다.

설명 − 합 S를 최대한 L,B,H로 나누어 봅시다.

L=S/3 ----> (L=2 integer part, remaining S is 4)
B=(S-L)/2=(S-S/3)/2 ----> (B=2, remaining S is 2)
H=S-L-B = S-S/3-(S-S/3) ----> (H=2, remaining S is 0)

입력 - S=10

출력 − 주어진 변의 합을 갖는 직육면체의 최대 부피는 36입니다.

설명 − 합 S를 최대한 L,B,H로 나누어 봅시다.

L=S/3 ----> (L=3 integer part, remaining S is 7)
B=(S-L)/2=(S-S/3)/2 ----> (B=3, remaining S is 4)
H=S-L-B = S-S/3-(S-S/3) ----> (H=4, remaining S is 0)

아래 프로그램에서 사용하는 접근 방식은 다음과 같습니다.

  • 사용자로부터 Sum으로 입력을 받습니다.

  • 길이를 Sum/3(정수 연산)으로 계산하고 Sum을 Sum-Length로 업데이트합니다.

  • 너비를 Sum/2(정수 산술)로 계산하고 Sum을 Sum-Breadth로 업데이트합니다.

  • 이제 나머지 합계를 높이에 할당합니다.

  • 참고 - 변의 계산 순서는 중요하지 않습니다.

예시

#include <bits/stdc++.h>
using namespace std;
int Maximize_Volume(int sumofsides){
   int length,breadth,height;
   length=breadth=height=0;
   // finding length
   length = sumofsides / 3;
   sumofsides -= length;
   // finding breadth
   breadth = sumofsides / 2;
   // remaining sumofsides is height
   height = sumofsides - breadth;
   return length * breadth * height;
}
// Driven Program
int main(){
   int sos = 12;
   cout << "Maximized volume of the cuboid with given sum of sides is "<<Maximize_Volume(sos) << endl;
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다 -

Maximized volume of the cuboid with given sum of sides is 64