Dado un número entero N y un triángulo isósceles de altura H , la tarea es encontrar (N – 1) puntos en el triángulo tales que la línea que pasa por estos puntos y paralela a la base del triángulo, divida el área total en N a partes iguales.
Ejemplos:
Entrada: N = 3, H = 2
Salida: 1.15 1.63
Explicación: Haga cortes en el punto 1.15 y 1.63 como se muestra a continuación:
Entrada: N = 2, H = 1000
Salida: 70710.67
Enfoque: El problema se puede resolver observando las siguientes propiedades:
Divide el triángulo de manera que (x i / h) 2 = i / N
=> x i = h*√(i/n)
x i = altura del i -ésimo corte desde el vértice superior del triángulo
Siga los pasos a continuación para resolver el problema:
- Iterar sobre el rango [1, N – 1] .
- En cada i -ésima iteración, imprima el valor de x i usando la fórmula anterior.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ Code for above approach #include <bits/stdc++.h> using namespace std; // Function to divide the isosceles triangle // in equal parts by making N-1 cuts // parallel to the base void findPoint(int n, int h) { // Iterate over the range [1, n - 1] for (int i = 1; i < n; i++) printf("%.2f ", sqrt(i / (n*1.0)) * h); } // Driver code int main() { // Given N int n = 3; // Given H int h = 2; // Function call findPoint(n, h); return 0; } // This code is contributed by mohit kumar 29
Java
// Java Code for above approach import java.util.*; class GFG { // Function to divide the isosceles triangle // in equal parts by making N-1 cuts // parallel to the base static void findPoint(int n, int h) { // Iterate over the range [1, n - 1] for (int i = 1; i < n; i++) System.out.printf("%.2f ", Math.sqrt(i / (n * 1.0)) * h); } // Driver code public static void main(String[] args) { // Given N int n = 3; // Given H int h = 2; // Function call findPoint(n, h); } } // This code is contributed by shikhasingrajput
Python3
# Python Code for above approach # Function to divide the isosceles triangle # in equal parts by making N-1 cuts # parallel to the base def findPoint(n, h): # Iterate over the range [1, n - 1] for i in range(1, n): print("{0:.2f}".format(((i / n) ** 0.5) * h), end =' ') # Driver Code if __name__ == '__main__': # Given N n = 3 # Given H h = 2 # Function call findPoint(n, h)
C#
// C# Code for above approach using System; class GFG { // Function to divide the isosceles triangle // in equal parts by making N-1 cuts // parallel to the base static void findPoint(int n, int h) { // Iterate over the range [1, n - 1] for (int i = 1; i < n; i++) Console.Write("{0:F2} ", Math.Sqrt(i / (n * 1.0)) * h); } // Driver code public static void Main(String[] args) { // Given N int n = 3; // Given H int h = 2; // Function call findPoint(n, h); } } // This code is contributed by shikhasingrajput
Javascript
<script> // Javascript program for the above approach // Function to divide the isosceles triangle // in equal parts by making N-1 cuts // parallel to the base function findPolet(n, h) { // Iterate over the range [1, n - 1] for (let i = 1; i < n; i++) document.write( Math.sqrt(i / (n * 1.0)) * h + " "); } // driver function // Given N let n = 3; // Given H let h = 2; // Function call findPolet(n, h);; // This code is contributed by souravghosh0416. </script>
1.15 1.63
Complejidad temporal: O(N)
Espacio auxiliar: O(1)