Dado un número entero L , que representa la longitud del lado de un polígono regular de N lados y el número entero K , la tarea es encontrar la longitud del lado del polígono regular K de N lados formado dentro del ( K – 1) polígono regular conectando puntos medios de los lados del (K – 1) polígono .
Ejemplos:
Entrada: N = 3, L = 6, K = 2
Salida: 3Entrada: N = 5, L = 21, K = 7
Salida: 5,88796
Enfoque: El problema dado se puede resolver con base en las siguientes observaciones:
- Supongamos que \theta representa el ángulo interior del polígono de N lados que es el mismo para todos los polígonos formados en el interior, es decir,
- La longitud del lado del primer polígono formado en el interior al conectar los puntos medios de los lados se puede calcular usando la fórmula como .
- La longitud del lado del polígono K formado dentro del polígono ( K – 1) y conectando los puntos medios de los lados del polígono (K – 1 ) es
Siga los pasos a continuación para resolver el problema:
- Encuentre el ángulo interior del polígono regular de N lados y guárdelo en un ángulo variable, digamos en radianes.
- Imprime la longitud del lado después de calcular la longitud del lado del polígono regular de lados K – ésimo N mediante la fórmula discutida anteriormente .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; #define PI 3.14159265 // Function to calculate the interior // angle of a N-sided regular polygon double findInteriorAngle(int n) { return (n - 2) * PI / n; } // Function to find the K-th polygon // formed inside the (K - 1)th polygon double calculateSideLength(double L, int N, int K) { // Stores the interior angle double angle = findInteriorAngle(N); // Stores the side length of // K-th regular polygon double length = L * pow(sin(angle / 2), (K - 1)); // Return the length return length; } // Driver Code int main() { double N = 5, L = 21, K = 7; cout << calculateSideLength(L, N, K); return 0; }
Java
// Java program for the above approach import java.util.*; class GFG{ static final double PI = 3.14159265; // Function to calculate the interior // angle of a N-sided regular polygon static double findInteriorAngle(int n) { return ((n - 2) * PI) / n; } // Function to find the K-th polygon // formed inside the (K - 1)th polygon static double calculateSideLength(double L, int N, int K) { // Stores the interior angle double angle = findInteriorAngle(N); // Stores the side length of // K-th regular polygon double length = L * Math.pow(Math.sin(angle / 2), (K - 1)); // Return the length return length; } // Driver Code public static void main(String[] args) { double L = 21; int N = 5, K = 7; System.out.print(calculateSideLength(L, N, K)); } } // This code is contributed by 29AjayKumar
Python3
# Python3 program for the above approach import math PI = 3.14159265 # Function to calculate the interior # angle of a N-sided regular polygon def findInteriorAngle(n): return (n - 2) * PI / n # Function to find the K-th polygon # formed inside the (K - 1)th polygon def calculateSideLength(L, N, K): # Stores the interior angle angle = findInteriorAngle(N) # Stores the side length of # K-th regular polygon length = L * pow(math.sin(angle / 2), (K - 1)) # Return the length return length # Driver Code if __name__ == "__main__": N = 5 L = 21 K = 7 print(calculateSideLength(L, N, K)) # This code is contributed by ukasp.
C#
// C# program for the above approach using System; class GFG{ static readonly double PI = 3.14159265; // Function to calculate the interior // angle of a N-sided regular polygon static double findInteriorAngle(int n) { return ((n - 2) * PI) / n; } // Function to find the K-th polygon // formed inside the (K - 1)th polygon static double calculateSideLength(double L, int N, int K) { // Stores the interior angle double angle = findInteriorAngle(N); // Stores the side length of // K-th regular polygon double length = L * Math.Pow(Math.Sin(angle / 2), (K - 1)); // Return the length return length; } // Driver Code public static void Main(String[] args) { double L = 21; int N = 5, K = 7; Console.Write(calculateSideLength(L, N, K)); } } // This code is contributed by 29AjayKumar
Javascript
<script> // Javascript program for the above approach const PI = 3.14159265 // Function to calculate the interior // angle of a N-sided regular polygon function findInteriorAngle(n) { return (n - 2) * PI / n; } // Function to find the K-th polygon // formed inside the (K - 1)th polygon function calculateSideLength(L, N, K) { // Stores the interior angle let angle = findInteriorAngle(N); // Stores the side length of // K-th regular polygon let length = L * Math.pow(Math.sin(angle / 2), (K - 1)); // Return the length return length; } // Driver Code let N = 5 let L = 21 let K = 7; document.write(calculateSideLength(L, N, K)) </script>
Producción:
5.88796
Complejidad de Tiempo: O(log K)
Espacio Auxiliar: O(1), ya que no se ha tomado espacio extra.