Encuentre la longitud del Kth polígono de N lados formado por operaciones dadas

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: 3

Entrada: 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, \theta = \frac{(N - 2)*180}{N}
  • 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  \frac{2*L*sen(\frac{\theta}{2})}{2}            .
  • 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 L*Sen^{K - 1}(\frac{\theta}{2})

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  L*Sen^{K - 1}(\frac{\theta}{2})            .

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.

Publicación traducida automáticamente

Artículo escrito por sam_2200 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *