给定周长P和面积A,任务是从给定的周长和表面积计算以长方体形式可以制成的最大体积。
例子 :
Input: P = 24, A = 24
Output: 8
Input: P = 20, A = 14
Outpu: 3
方法:对于给定的长方体周长,我们有P = 4(l + b + h)-(i),
对于给定的长方体面积,我们有A = 2(lb + bh + lh)-(ii)。
长方体的体积为V = lbh
音量取决于3个变量l,b,h。让它仅取决于长度。
as V = lbh,
=> V = l (A/2-(lb+lh)) {from equation (ii)}
=> V = lA/2 – l2(b+h)
=> V = lA/2 – l2(P/4-l) {from equation (i)}
=> V = lA/2 – l2P/4 + l3 —-(iii)
Now differentiate V w.r.t l for finding maximum of volume.
dV/dl = A/2 – lP/2 + 3l2
After solving the quadratic in l we have l = (P – (P2-24A)1/2) / 12
Substituting value of l in (iii), we can easily find the maximum volume.
下面是上述方法的实现:
C++
// C++ implementation of the above approach
#include
using namespace std;
// function to return maximum volume
float maxVol(float P, float A)
{
// calculate length
float l = (P - sqrt(P * P - 24 * A)) / 12;
// calculate volume
float V = l * (A / 2.0 - l * (P / 4.0 - l));
// return result
return V;
}
// Driver code
int main()
{
float P = 20, A = 16;
// Function call
cout << maxVol(P, A);
return 0;
}
Java
// Java implementation of the above approach
import java.util.*;
class Geeks {
// function to return maximum volume
static float maxVol(float P, float A)
{
// calculate length
float l
= (float)(P - Math.sqrt(P * P - 24 * A)) / 12;
// calculate volume
float V
= (float)(l * (A / 2.0 - l * (P / 4.0 - l)));
// return result
return V;
}
// Driver code
public static void main(String args[])
{
float P = 20, A = 16;
// Function call
System.out.println(maxVol(P, A));
}
}
// This code is contributed by Kirti_Mangal
Python3
# Python3 implementation of the
# above approach
from math import sqrt
# function to return maximum volume
def maxVol(P, A):
# calculate length
l = (P - sqrt(P * P - 24 * A)) / 12
# calculate volume
V = l * (A / 2.0 - l * (P / 4.0 - l))
# return result
return V
# Driver code
if __name__ == '__main__':
P = 20
A = 16
# Function call
print(maxVol(P, A))
# This code is contributed
# by Surendra_Gangwar
C#
// C# implementation of the above approach
using System;
class GFG {
// function to return maximum volume
static float maxVol(float P, float A)
{
// calculate length
float l
= (float)(P - Math.Sqrt(P * P - 24 * A)) / 12;
// calculate volume
float V
= (float)(l * (A / 2.0 - l * (P / 4.0 - l)));
// return result
return V;
}
// Driver code
public static void Main()
{
float P = 20, A = 16;
// Function call
Console.WriteLine(maxVol(P, A));
}
}
// This code is contributed
// by Akanksha Rai
PHP
Javascript
输出
4.14815