Find the dimensions of Right angled triangle

21 Jun, 2022
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++
Java
Python3
C#
PHP
Javascript
// CPP program to find dimensions of// Right angled triangle#include <bits/stdc++.h>using namespace std; // function to calculate dimensionvoid 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 functionint main(){    int H = 5;    int A = 6;    findDimen(H, A);    return 0;}
// Java program to find dimensions of// Right angled triangleclass 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.
# Python code to find dimensions# of Right angled triangle # importing the math package# to use sqrt functionfrom math import sqrt # function to find the dimensionsdef 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 codeH = 5 # assigning value to HA = 6 # assigning value to AfindDimen(H, A) # calling function # This code is contributed by "Abhishek Sharma 44"
// C# program to find dimensions of// Right angled triangleusing 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 program to find dimensions// of Right angled triangle // function to calculate dimensionfunction 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.?>
<script>// java script  program to find dimensions// of Right angled triangle // function to calculate dimensionfunction 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)    {        document.write( "Not Possible");        return;    }     // sqrt value of H^2 + 4A and    // H^2- 4A    let apb = Math.sqrt(H * H + 4 * A);    let asb = Math.sqrt(H * H - 4 * A);     document.write( "P = " +((apb - asb) / 2.0).toFixed(2), "<br>");    document.write( "B = " +((apb + asb) / 2.0).toFixed(2));}     // Driver Code    let H = 5;    let A = 6;    findDimen(H, A);// This code is contributed by Gottumukkala Bobby</script>
Output: 
P = 3.00
B = 4.00
Time complexity : O(1) Auxiliary Space : O(1)
vt_m
gottumukkalabobby
simranarora5sos
ajaymakvana
triangle
Geometric
Mathematical
Mathematical
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.