Given an area, A for a rectangle, find the minimum perimeter for the rectangle.
Example
If Area = 60, we can think of 5 rectangles with area 60.
1 * 60 = 60. Perimeter = 2* ( 1 + 60) = 122
2 * 30 = 60. Perimeter = 2* ( 2 + 30 ) = 64
3 * 20 = 60. Perimeter = 2* ( 3+ 20 ) = 46
4 * 15 = 60. Perimeter = 2* ( 4 + 15 ) = 38
6 * 10 = 60. Perimeter = 2* ( 6 + 10 ) = 32
So the minimum perimeter is 32.
Solution:
Steps:
- we can start with the obvious and keep finding the smallest perimeter. 1 * Area = Area. So, P = 2* ( 1 + A)
- We can start from i=2 and keep checking if A% i == 0, then take A/i, in our case these are the 30,20,15, and 10, which we get when we divide Area by i, where i > 1 and i * i < A
- The last step is to compare if the new perimeter we find is less than what we already have in step 1 and if it is save the new perimeter
int min = 2*A + 2; int i = 2; int x = 1;
while(i * i <= A) {
if(A % i == 0) {
x = A / i;
if( ((2*i) + (2*x)) < min) {
min = (2 * i) + (2 * x);
}
}
i++;
}
return min;