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

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

Below is the implementation of the above approach:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the above approach
#include <bits/stdc++.h>
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;
}
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP implementation of the above approach
 
// function to return maximum volume
function 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
$P = 20;
$A = 16;
 
// Function call
echo maxVol($P, $A);
 
// This code is contributed by mits
?>
chevron_right

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.





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.



Article Tags :
Practice Tags :