Given H (Hypotenuse) and A (area) of a right angled triangle, find the dimensions of right angled triangle such that the hypotenuse is of length H and its area is A. If no such triangle exists, print “Not Possible”.
Examples:
Input : H = 10, A = 24 Output : P = 6.00, B = 8.00 Input : H = 13, A = 36 Output : Not Possible
Approach:
Before moving to exact solution, let’s do some of mathematical calculations related to properties of Right angled triangle.
Suppose H = Hypotenuse, P = Perpendicular, B = Base and A = Area of right angled triangle.
We have some sort of equations as :
P^2 + B^2 = H^2 P * B = 2 * A (P+B)^2 = P^2 + B^2 + 2*P*B = H^2 + 4*A (P+B) = sqrt(H^2 + 4*A) ----1 (P-B)^2 = P^2 + B^2 - 2*P*B = H^2 - 4*A mod(P-B) = sqrt(H^2 - 4*A) ----2 from equation (2) we can conclude that if H^2 < 4*A then no solution is possible. Further from (1)+(2) and (1)-(2) we have : P = (sqrt(H^2 + 4*A) + sqrt(H^2 - 4*A) ) / 2 B = (sqrt(H^2 + 4*A) - sqrt(H^2 - 4*A) ) / 2
Below is the implementation of above approach:
C++
// CPP program to find dimensions of // Right angled triangle #include <bits/stdc++.h> using namespace std; // function to calculate dimension void findDimen(int H, int A) { // P^2+B^2 = H^2 // P*B = 2*A // (P+B)^2 = P^2+B^2+2*P*B = H^2+4*A // (P-B)^2 = P^2+B^2-2*P*B = H^2-4*A // P+B = sqrt(H^2+4*A) // |P-B| = sqrt(H^2-4*A) if (H * H < 4 * A) { cout << "Not Possible\n"; return; } // sqrt value of H^2 + 4A and H^2- 4A double apb = sqrt(H * H + 4 * A); double asb = sqrt(H * H - 4 * A); // Set precision cout.precision(2); cout << "P = " << fixed << (apb - asb) / 2.0 << "\n"; cout << "B = " << (apb + asb) / 2.0; } // driver function int main() { int H = 5; int A = 6; findDimen(H, A); return 0; } |
Java
// Java program to find dimensions of // Right angled triangle class GFG { // function to calculate dimension static void findDimen(int H, int A) { // P^2+B^2 = H^2 // P*B = 2*A // (P+B)^2 = P^2+B^2+2*P*B = H^2+4*A // (P-B)^2 = P^2+B^2-2*P*B = H^2-4*A // P+B = sqrt(H^2+4*A) // |P-B| = sqrt(H^2-4*A) if (H * H < 4 * A) { System.out.println("Not Possible"); return; } // sqrt value of H^2 + 4A and H^2- 4A double apb = Math.sqrt(H * H + 4 * A); double asb = Math.sqrt(H * H - 4 * A); System.out.println("P = " + Math.round(((apb - asb) / 2.0) * 100.0) / 100.0); System.out.print("B = " + Math.round(((apb + asb) / 2.0) * 100.0) / 100.0); } // Driver function public static void main(String[] args) { int H = 5; int A = 6; findDimen(H, A); } } // This code is contributed by Anant Agarwal. |
Python3
# Python code to find dimensions # of Right angled triangle # importing the math package # to use sqrt function from math import sqrt # function to find the dimensions def findDimen( H, A): # P ^ 2 + B ^ 2 = H ^ 2 # P * B = 2 * A # (P + B)^2 = P ^ 2 + B ^ 2 + 2 * P*B = H ^ 2 + 4 * A # (P-B)^2 = P ^ 2 + B ^ 2-2 * P*B = H ^ 2-4 * A # P + B = sqrt(H ^ 2 + 4 * A) # |P-B| = sqrt(H ^ 2-4 * A) if H * H < 4 * A: print("Not Possible") return # sqrt value of H ^ 2 + 4A and H ^ 2- 4A apb = sqrt(H * H + 4 * A) asb = sqrt(H * H - 4 * A) # printing the dimensions print("P = ", "%.2f" %((apb - asb) / 2.0)) print("B = ", "%.2f" %((apb + asb) / 2.0)) # driver code H = 5 # assigning value to H A = 6 # assigning value to A findDimen(H, A) # calliing function # This code is contributed by "Abhishek Sharma 44" |
C#
// C# program to find dimensions of // Right angled triangle using System; class GFG { // function to calculate dimension static void findDimen(int H, int A) { // P^2+B^2 = H^2 // P*B = 2*A // (P+B)^2 = P^2+B^2+2*P*B = H^2+4*A // (P-B)^2 = P^2+B^2-2*P*B = H^2-4*A // P+B = sqrt(H^2+4*A) // |P-B| = sqrt(H^2-4*A) if (H * H < 4 * A) { Console.WriteLine("Not Possible"); return; } // sqrt value of H^2 + 4A and H^2- 4A double apb = Math.Sqrt(H * H + 4 * A); double asb = Math.Sqrt(H * H - 4 * A); Console.WriteLine("P = " + Math.Round( ((apb - asb) / 2.0) * 100.0) / 100.0); Console.WriteLine("B = " + Math.Round( ((apb + asb) / 2.0) * 100.0) / 100.0); } // Driver function public static void Main() { int H = 5; int A = 6; findDimen(H, A); } } // This code is contributed by vt_m. |
PHP
<?php // PHP program to find dimensions // of Right angled triangle // function to calculate dimension function findDimen($H, $A) { // P^2+B^2 = H^2 // P*B = 2*A // (P+B)^2 = P^2+B^2+2*P*B = H^2+4*A // (P-B)^2 = P^2+B^2-2*P*B = H^2-4*A // P+B = sqrt(H^2+4*A) // |P-B| = sqrt(H^2-4*A) if ($H * $H < 4 * $A) { echo "Not Possible\n"; return; } // sqrt value of H^2 + 4A and // H^2- 4A $apb = sqrt($H * $H + 4 * $A); $asb = sqrt($H * $H - 4 * $A); echo "P = " , $fixed , ($apb - $asb) / 2.0 , "\n"; echo "B = " , ($apb + $asb) / 2.0; } // Driver Code $H = 5; $A = 6; findDimen($H, $A); // This code is contributed by vt_m. ?> |
Output:
P = 3.00 B = 4.00
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
Recommended Posts:
- Find all sides of a right angled triangle from given hypotenuse and area | Set 1
- Find the hypotenuse of a right angled triangle with given two sides
- Find the height of a right-angled triangle whose area is X times its base
- Check whether right angled triangle is valid or not for large sides
- Number of possible pairs of Hypotenuse and Area to form right angled triangle
- Check if a right-angled triangle can be formed by the given coordinates
- Area of Circumcircle of a Right Angled Triangle
- Area of Incircle of a Right Angled Triangle
- Check if a right-angled triangle can be formed by moving any one of the coordinates
- Count of Right-Angled Triangle formed from given N points whose base or perpendicular are parallel to X or Y axis
- Dividing the rectangle into n right-angled triangles
- Count right angled triangles in a matrix having two of its sides parallel to sides of the matrix
- Biggest Reuleaux Triangle within a Square which is inscribed within a Right angle Triangle
- Kth Smallest Element of a Matrix of given dimensions filled with product of indices
- Find other two sides of a right angle triangle
- Find other two sides and angles of a right angle triangle
- Biggest Reuleaux Triangle inscribed within a Square inscribed in an equilateral triangle
- Program to print a Hollow Triangle inside a Triangle
- Maximum number of 2x2 squares that can be fit inside a right isosceles triangle
- Check if right triangle possible from given area and hypotenuse
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.
Improved By : vt_m

