Dada la altura de un triángulo isósceles y dos números enteros , . La tarea es encontrar la altura desde la parte superior del triángulo tal que si hacemos un corte a la altura h desde la parte superior paralela a la base, entonces el triángulo debe dividirse en dos partes con la proporción de sus áreas igual a n:m .
Ejemplos :
Input : H = 4, n = 1, m = 1 Output : 2.82843 Input : H = 4, n = 1, m = 0 Output : 4
En primer lugar, antes de continuar, mencionemos algunas de las propiedades básicas de un triángulo isósceles.
Sea ▲ABC un triángulo isósceles con AB = AC y BC siendo lado y base desiguales del triángulo. Si D es el punto medio de BC, entonces AD es nuestra altura H. Además, si dibujamos una línea paralela a BC que corta a AB y AC en los puntos E y F respectivamente y G es el punto medio de EF, entonces ▲AEG es similar a ▲ABD, ▲AFG es similar a ▲ACD, ▲AEF es similar a ▲ABC, y al usar las propiedades de los triángulos similares podemos concluir los siguientes puntos:
AE/AB = AG/AD = EG/BD = EF/BC = AF /AC —–(i)
Según el requisito del problema, tenemos que encontrar la altura h, tal que la relación entre el área de ▲AEF y el área del trapecio EFCB = n:m.
Sea h la altura de corte desde la parte superior del triángulo.
Ahora, el área de ▲AEF = 0.5 * AG * EF y el área del trapecio EFCB = 0.5 * GD * (EF+BC)
también, la relación de ambos es n:m.
Entonces, podemos decir que la relación entre el área de ▲AEF y el área de ▲ABC es igual a n :(n+m).
=> área de ▲AEF / área de ▲ABC = n / (n+m)
=> (0.5 * AG * EF) / (0.5 * AD * BC) = n / (n+m)
=> (AG/AD ) * (EF/BC) = n / (n+m)
=> (EF/BC) * (EF/BC) = n / (n+m)
=> h 2 /H 2 = n / (n+m )
=> h = H*raíz cuadrada(n/(n+m))
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program, to find height h // which divide isosceles triangle // into ratio n:m #include <bits/stdc++.h> using namespace std; // Function to return the height float heightCalculate(int H, int n, int m) { // type cast the n, m into float float N = n * 1.0; float M = m * 1.0; // calculate the height for cut float h = H * sqrt(N / (N + M)); return h; } // Driver code int main() { int H = 10, n = 3, m = 4; cout << heightCalculate(H, n, m); return 0; }
Java
// Java program, to find height h // which divide isosceles triangle // into ratio n:m import java.io.*; class GFG { // Function to return the height static float heightCalculate(int H, int n, int m) { // type cast the n, m into float float N = (float)(n * 1.0); float M = (float)(m * 1.0); // calculate the height for cut float h = H *(float) Math.sqrt(N / (N + M)); return h; } // Driver code public static void main (String[] args) { int H = 10, n = 3, m = 4; System.out.print( heightCalculate(H, n, m)); } }
Python3
# Python 3 program, to find height # h which divide isosceles triangle # into ratio n:m from math import sqrt # Function to return the height def heightCalculate(H, n, m): # type cast the n, m into float N = n * 1.0 M = m * 1.0 # calculate the height for cut h = H * sqrt(N / (N + M)) return h # Driver code if __name__ == '__main__': H = 10 n = 3 m = 4 print("{0:.6}" . format(heightCalculate(H, n, m))); # This code is contributed # by Surendra_Gangwar
C#
// C# program, to find height h // which divide isosceles triangle // into ratio n:m using System; class GFG { // Function to return the height static float heightCalculate(int H, int n, int m) { // type cast the n, m into float float N = (float)(n * 1.0); float M = (float)(m * 1.0); // calculate the height for cut float h = H * (float) Math.Sqrt(N / (N + M)); return h; } // Driver code public static void Main () { int H = 10, n = 3, m = 4; Console.WriteLine(heightCalculate(H, n, m)); } } // This code is contributed // by inder_verma
PHP
<?php // PHP program, to find height h // which divide isosceles triangle // into ratio n:m // Function to return the height function heightCalculate($H, $n, $m) { // type cast the n, m into float $N = $n * 1.0; $M = $m * 1.0; // calculate the height for cut $h = $H * sqrt($N / ($N + $M)); return $h; } // Driver code $H = 10; $n = 3; $m = 4; echo heightCalculate($H, $n, $m); // This code is contributed // by anuj_67 ?>
Javascript
<script> // JavaScript program, to find height h // which divide isosceles triangle // into ratio n:m // Function to return the height function heightCalculate(H, n, m) { // type cast the n, m into float let N = n * 1.0; let M = m * 1.0; // calculate the height for cut let h = H * Math.sqrt(N / (N + M)); return h; } // Driver code let H = 10, n = 3, m = 4; document.write(heightCalculate(H, n, m)); // This code is contributed by Surbhi Tyagi. </script>
6.54654
Complejidad de Tiempo : O(1)
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