# Check if right triangle possible from given area and hypotenuse

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
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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 trianlge ` `// 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 trianlge ` `    ``// 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. `

## Python

 `# Python program to check existence of ` `# right triangle. ` `from` `math ``import` `sqrt ` ` `  `# Prints three sides of a right trianlge ` `# 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 ``=` `sqrt(root1) ` `        ``b ``=` `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 trianlge ` `    ``// 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 ` `?> `

Output:

```3 4 5
```