# Find maximum volume of a cuboid from the given perimeter and area

Given a perimeter P and area A, the task is to calculate the maximum volume that can be made in form of cuboid from the given perimeter and surface area.

Examples :

```Input: P = 24, A = 24
Output: 8

Input: P = 20, A = 14
Output: 3

```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: For a given perimeter of cuboid we have P = 4(l+b+h) —(i),
for given area of cuboid we have A = 2 (lb+bh+lh) —(ii).
Volume of cuboid is V = lbh

Volume is dependent on 3 variables l, b, h. Lets make it dependent on only length.

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)) / 12
Substituting value of l in (iii), we can easily find the maximum volume.

Below is the implementation of the above approach:

## 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; ` `    ``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``; ` `    ``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` `    ``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; ` `    ``Console.WriteLine(maxVol(P, A)); ` `} ` `} ` ` `  `// This code is contributed ` `// by Akanksha Rai `

## PHP

 ` `

My Personal Notes arrow_drop_up Discovering ways to develop a plane for soaring career goals

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.