![]() |
VOOZH | about |
Given area and hypotenuse, the aim is to print all sides if right triangle can exist, else print -1. We need to print all sides in ascending order.
Examples:
Input : 6 5 Output : 3 4 5 Input : 10 6 Output : -1
We have discussed a solution of this problem in below post.
Find all sides of a right angled triangle from given hypotenuse and area | Set 1
In this post, a new solution with below logic is discussed.
Let the two unknown sides be a and b
Area : A = 0.5 * a * b
Hypotenuse Square : H^2 = a^2 + b^2
Substituting b, we get H2 = a2 + (4 * A2)/a2
On re-arranging, we get the equation a4 - (H2)(a2) + 4*(A2)
The discriminant D of this equation would be D = H4 - 16*(A2)
If D = 0, then roots are given by the linear equation formula, roots = (-b +- sqrt(D) )/2*a
these roots would be equal to the square of the sides, finding the square roots would give us the sides.
Output:
3 4 5
Time complexity: O(log(n)) since using inbuilt sqrt functions
Auxiliary Space: O(1)