Dados H (hipotenusa) y A (área) de un triángulo rectángulo, encuentre las dimensiones del triángulo rectángulo tal que la hipotenusa tenga una longitud H y su área sea A. Si no existe tal triángulo, escriba «No es posible».
Ejemplos:
Input : H = 10, A = 24 Output : P = 6.00, B = 8.00 Input : H = 13, A = 36 Output : Not Possible
Enfoque:
antes de pasar a la solución exacta, hagamos algunos cálculos matemáticos relacionados con las propiedades del triángulo rectángulo.
Suponga que H = Hipotenusa, P = Perpendicular, B = Base y A = Área del triángulo rectángulo.
Tenemos algún tipo de ecuaciones como:
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
A continuación se muestra la implementación del enfoque anterior:
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) # calling 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. ?>
Javascript
<script> // java script 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) { 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>
Producción:
P = 3.00 B = 4.00
Complejidad de tiempo : O (log (n)) desde que se usan funciones sqrt incorporadas
Espacio auxiliar : O (1)
Publicación traducida automáticamente
Artículo escrito por Shivam.Pradhan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA