Posted by Ryan on Tuesday, October 27, 2009 at 2:05am.
can enyone help me figure this out...
Surface to Volume Ratio
Write a program to compute surface to volume ratio. We will be given the height, width, and depth of N cuboid, and determine the smallest surface to volume ratio among them.
The first line of the input data consists of N, where 0 < N <= 1000. The next N lines contain the height, width, and depth of each cuboid. All the dimensions are between 1 and 50.
You should output the smallest surface to volume ratio as "a/b". This number must be simplified, that is, a and b must be prime to each other.
2 3 4
1 1 1
Hint: You may find the following recursive definition of greatest common divisor (gcd) useful. Let a >¢ê > 0. If the reminder of dividing a by b is 0, then of course the gcd of a and b is b. If the reminder is non-zero number c, then the gcd of and b is equal to the gcd of b and c.
programming language - jim, Tuesday, October 27, 2009 at 9:11am
One approach, simple but with a caveat or two:
You need a double for "smallest absoulte ratio so far". Initialise it to something very big.
As you take in each line,
a) calculate the surface and the volume as two integers
b) calculate the absolute ratio as a double
the absolute ratio is bigger than the "smallest absolute ratio so far", ignore that line,
store your new "smallest absolute ratio so far" and the surface and volume integers
At end, reduce your two integers to their lowest terms by calculating out their prime factors and dividing by the ones they have in common.
Technically, there's a potential gotcha in using a double, since it's possible that two ratios are so close that a double doesn't have enough precision to distinguish between them. However, with dimensions only up to 50, I think you'll be safe.
Afterthought: the input could contain two identical lines, or lines that end up with identical answers, and if I were writing the test, I surely would put such identical lines in! That's OK, because the answer is the same.
programming language - jim, Tuesday, October 27, 2009 at 9:22am
OK, my conscience nags me about that double.
To do it right, then instead of taking the lazy way of converting to doubles, and comparing, then:
if your current smallest is, say, 13/6
and your new line is, say, 27/13
you should do the comparison by finding a common denominator. You don't have to waste CPU cycles on finding the lowest; just multiply the denominators:
13 / 6 = 169 / 78
27 / 13 = 162 / 78
and then compare your numerators to test which is smaller.
Answer This Question
More Related Questions
- algebra - Find the lateral surface of a cuboid whose length, breadth and height ...
- Math - A rectangular prism has a volume of 960cm. It's width, length, and ...
- Biology - When cells increase in size, the surface area to volume ratio ...
- science - 1. For the three cubes shown below, determine their surface area, ...
- bio - 3. For the three cubes shown below, determine their surface area, volume ...
- science - for the three cubes shown below, determine their surface area, volume ...
- math - the dimension of a cuboid are in the ratio 5:3:2.find total surface area...
- bio - How does the surface area-to-volume ratio of a 1-mm cube compare to the ...
- surface area and volume - The diameter of two cones are equal if their slant ...
- Bio - Please Check my work and help me to answer the questions i could not get. ...