Question:
Johnny needs to make a rectangular box for his physics class project. He has bought P cm of wire and S cm2 of special paper. He would like to use all the wire (for the 12 edges) and paper (for the 6 sides) to make the box.
What is the largest volume of the box that Johnny can make?
Input
The first line contains t, the number of test cases (about 10). Then t test cases follow.
Each test case contains two integers P and S in a line (1 ≤ P ≤ 40000, 1 ≤ S ≤ 20000). You may assume that there always exists an optimal solution for the given input cases.
Output
For each test case, print a real number that is the largest volume of the box that Johnny can make, rounded to two decimal places.
Example
Input:
2
20 14
20 16
Output:
3.00
4.15
Output details
First case: the dimensions of the largest box may be 3, 1 and 1.
Second case: the dimensions of the largest box may be 7/3, 4/3 and 4/3.
Link to this question
At first I couldn't do this but after having a look at this solution it became easier..
test cases have their importance...
Original Soln==>http://www.codechef.com/viewsolution/701328
from math import sqrt
def highest_vol(p,s):
"""
s=2(lb+bh+hl)==>formula for surface area of cuboid
p=4(l+b+h)=====>Sum of all edges
based on test case results given we can observe that b=h substitute in the above equations
l=p/4-2h
3h^2-ph/2+s/2=0 solve this quadratic for h1,h2
"""
constant=sqrt(p*p-24*s)
H=[(p+constant)/12.,(p-constant)/12.]
L=[(p-8*H[0])/4.,(p-8*H[1])/4.]
V=[L[0]*H[0]*H[0],L[1]*H[1]*H[1]]
return max(V)
inp=int(raw_input())
for i in range(inp):
p,s= map(int, raw_input().split())
print '%0.2f' % highest_vol(p,s)
No comments:
Post a Comment