# Check if right triangle possible from given area and hypotenuse

Last Updated : 27 Aug, 2022

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.

## C++

 `// C++ program to check existence of` `// right triangle.` `#include ` `using` `namespace` `std;`   `// Prints three sides of a right triangle` `// from given area and hypotenuse if triangle` `// is possible, else prints -1.` `void` `findRightAngle(``int` `A, ``int` `H) ` `{` `    ``// Descriminant of the equation` `    ``long` `D = ``pow``(H, 4) - 16 * A * A;` `    `  `    ``if` `(D >= 0) ` `    ``{` `        ``// applying the linear equation` `        ``// formula to find both the roots` `        ``long` `root1 = (H * H + ``sqrt``(D)) / 2;` `        ``long` `root2 = (H * H - ``sqrt``(D)) / 2;` `    `  `        ``long` `a = ``sqrt``(root1);` `        ``long` `b = ``sqrt``(root2);` `        `  `        ``if` `(b >= a)` `        ``cout << a << ``" "` `<< b << ``" "` `<< H;` `        ``else` `        ``cout << b << ``" "` `<< a << ``" "` `<< H;` `    ``}` `    ``else` `        ``cout << ``"-1"``;` `}`   `// Driver code` `int` `main() ` `{` `    ``findRightAngle(6, 5); ` `    `  `}`   `// This code is contributed By Anant Agarwal.`

## Java

 `// Java program to check existence of` `// right triangle.`   `class` `GFG {` `    `  `    ``// Prints three sides of a right triangle` `    ``// from given area and hypotenuse if triangle` `    ``// is possible, else prints -1.` `    ``static` `void` `findRightAngle(``double` `A, ``double` `H) ` `    ``{` `        ``// Descriminant of the equation` `        ``double` `D = Math.pow(H, ``4``) - ``16` `* A * A;` `        `  `        ``if` `(D >= ``0``)` `        ``{` `            ``// applying the linear equation` `            ``// formula to find both the roots` `            ``double` `root1 = (H * H + Math.sqrt(D)) / ``2``;` `            ``double` `root2 = (H * H - Math.sqrt(D)) / ``2``;` `        `  `            ``double` `a = Math.sqrt(root1);` `            ``double` `b = Math.sqrt(root2);` `            ``if` `(b >= a)` `                ``System.out.print(a + ``" "` `+ b + ``" "` `+ H);` `            ``else` `                ``System.out.print(b + ``" "` `+ a + ``" "` `+ H);` `        ``} ` `        ``else` `            ``System.out.print(``"-1"``);` `    ``}` `    `  `    ``// Driver code` `    ``public` `static` `void` `main(String arg[]) ` `    ``{` `        ``findRightAngle(``6``, ``5``);` `    ``}` `}`   `// This code is contributed by Anant Agarwal.`

## Python3

 `# Python program to check existence of` `# right triangle.` `from` `math ``import` `sqrt`   `# Prints three sides of a right triangle` `# from given area and hypotenuse if triangle` `# is possible, else prints -1.` `def` `findRightAngle(A, H):`   `    ``# Descriminant of the equation` `    ``D ``=` `pow``(H,``4``) ``-` `16` `*` `A ``*` `A` `    ``if` `D >``=` `0``:`   `        ``# applying the linear equation` `        ``# formula to find both the roots` `        ``root1 ``=` `(H ``*` `H ``+` `sqrt(D))``/``/``2` `        ``root2 ``=` `(H ``*` `H ``-` `sqrt(D))``/``/``2`   `        ``a ``=` `int``(sqrt(root1))` `        ``b ``=` `int``(sqrt(root2))` `        ``if` `b >``=` `a:` `            ``print` `(a, b, H)` `        ``else``:` `            ``print` `(b, a, H)` `    ``else``:` `        ``print` `(``"-1"``)`   `# Driver code` `# Area is 6 and hypotenuse is 5.` `findRightAngle(``6``, ``5``)`

## C#

 `// C# program to check existence of` `// right triangle.` `using` `System;`   `class` `GFG {`   `    ``// Prints three sides of a right triangle` `    ``// from given area and hypotenuse if triangle` `    ``// is possible, else prints -1.` `    ``static` `void` `findRightAngle(``double` `A, ``double` `H)` `    ``{` `        `  `        ``// Descriminant of the equation` `        ``double` `D = Math.Pow(H, 4) - 16 * A * A;`   `        ``if` `(D >= 0) {` `            `  `            ``// applying the linear equation` `            ``// formula to find both the roots` `            ``double` `root1 = (H * H + Math.Sqrt(D)) / 2;` `            ``double` `root2 = (H * H - Math.Sqrt(D)) / 2;`   `            ``double` `a = Math.Sqrt(root1);` `            ``double` `b = Math.Sqrt(root2);` `            `  `            ``if` `(b >= a)` `                ``Console.WriteLine(a + ``" "` `+ b + ``" "` `+ H);` `            ``else` `                ``Console.WriteLine(b + ``" "` `+ a + ``" "` `+ H);` `        ``}` `        ``else` `            ``Console.WriteLine(``"-1"``);` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `Main()` `    ``{` `        ``findRightAngle(6, 5);` `    ``}` `}`   `// This code is contributed by vt_m.`

## PHP

 `= 0) ` `    ``{` `        `  `        ``// applying the linear equation` `        ``// formula to find both the roots` `        ``\$root1` `= (``\$H` `* ``\$H` `+ sqrt(``\$D``)) / 2;` `        ``\$root2` `= (``\$H` `* ``\$H` `- sqrt(``\$D``)) / 2;` `    `  `        ``\$a` `= sqrt(``\$root1``);` `        ``\$b` `= sqrt(``\$root2``);` `        `  `        ``if` `(``\$b` `>= ``\$a``)` `            ``echo` `\$a` `, ``" "``, ``\$b` `, ``" "` `, ``\$H``;` `        ``else` `        ``echo` `\$b` `, ``" "` `, ``\$a` `, ``" "` `, ``\$H``;` `    ``}` `    ``else` `        ``echo` `"-1"``;` `}`   `    ``// Driver code` `    ``findRightAngle(6, 5); ` `    `  `// This code is contributed By Anuj_67` `?>`

## Javascript

 ``

Output:

`3 4 5`

Time complexity: O(log(n)) since using inbuilt sqrt functions

Auxiliary Space: O(1)

Previous
Next