Dado un polígono regular de N lados con longitud de lado a . La tarea es encontrar el área del círculo que se inscribe en el polígono.
Nota: este problema es una versión mixta de este y este
ejemplos:
Input: N = 6, a = 4 Output: 37.6801 Explanation:
In this, the polygon have 6 faces and as we see in fig.1 we clearly see that the angle x is 30 degree so the radius of circle will be ( a / (2 * tan(30))) Therefore, r = a√3/2 Input: N = 8, a = 8 Output: 292.81 Explanation:
In this, the polygon have 8 faces and as we see in fig.2 we clearly see that the angle x is 22.5 degree so the radius of circle will be ( a / (2 * tan(22.5))) Therefore, r = a/0.828
Planteamiento : En la figura de arriba, vemos que el polígono se puede dividir en N triángulos iguales. Mirando uno de los triángulos, vemos que todo el ángulo en el centro se puede dividir en = 360/N
Entonces, el ángulo x = 180/n
Ahora, tan(x) = (a / 2) * r
Entonces, r = a / ( 2 * tan(x))
Entonces, el área del círculo inscrito es,
A = Πr² = Π * (a / (2 * tan(x))) * (a / (2*tan(x)))
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ Program to find the area of a circle in // inscribed in polygon #include <bits/stdc++.h> using namespace std; // Function to find the area // of a circle float InscribedCircleArea(float n, float a) { // Side and side length cannot be negative if (a < 0 && n < 0) return -1; // degree converted to radians float r = a / (2 * tan((180 / n) * 3.14159 / 180)); // area of circle float Area = (3.14) * (r) * (r); return Area; } // Driver code int main() { // no. of sides float n = 6; // side length float a = 4; cout << InscribedCircleArea(n, a) << endl; return 0; }
Java
// Java Program to find the area of a circle // inscribed in a polygon import java.io.*; class GFG { // Function to find the area // of a regular polygon static float InscribedCircleArea(float n, float a) { // Side and side length cannot be negative if (a < 0 && n < 0) return -1; // degree converted to radians float r = a / (float)(2 * Math.tan((180 / n) * 3.14159 / 180)); // area of circle float Area = (float)(3.14) * (r) * (r); return Area; } // Driver code public static void main(String[] args) { // no. of sides float n = 6; // side length float a = 4; System.out.println(InscribedCircleArea(n, a)); } }
Python3
# Python 3 Program to find the area # of a circle inscribed # in a polygon from math import tan # Function to find the area of a # circle def InscribedCircleArea(n, a): # Side and side length cannot # be negative if (a < 0 and n < 0): return -1 # degree converted to radians r = a/(2 * tan((180 / n) * 3.14159 / 180)); # area of circle Area = 3.14 * r * r return Area # Driver code if __name__ == '__main__': a = 4 n = 6 print('{0:.6}'.format(InscribedCircleArea(n, a))) # This code is contributed by # Chandan Agrawal
C#
// C# Program to find the area of a circle // inscribed in a polygon using System; class GFG { // Function to find the area // of a regular polygon static float InscribedCircleArea(float n, float a) { // Side and side length cannot be negative if (a < 0 && n < 0) return -1; // degree converted to radians float r = a / (float)(2 * Math.Tan((180 / n) * 3.14159 / 180)); // area of circle float Area = (float)(3.14) * (r) * (r); return Area; } // Driver code public static void Main() { // no. of sides float n = 6; // side length float a = 4; Console.WriteLine(InscribedCircleArea(n, a)); } } // This code is contributed by Ryuga
PHP
<?php // PHP Program to find the area // of a circle inscribed // in a polygon // Function to find the area of a // circle function InscribedCircleArea($n, $a) { // Side and side length cannot // be negative if ($a < 0 && $n < 0) return -1; // degree converted to radians $r = $a / (2 * tan((180 / $n) * 3.14159 / 180)); // area of circle $Area = 3.14 * $r * $r; return $Area; } // Driver code $a = 4; $n = 6; echo(InscribedCircleArea($n, $a)); // This code contributed by PrinciRaj1992 ?>
Javascript
<script> // Javascript Program to find the area of a circle // inscribed in a polygon // Function to find the area // of a regular polygon function InscribedCircleArea( n ,a) { // Side and side length cannot be negative if (a < 0 && n < 0) return -1; // degree converted to radians let r = a / (2 * Math.tan((180 / n) * 3.14159 / 180)); // area of circle let Area = (3.14) * (r) * (r); return Area; } // Driver code // no. of sides let n = 6; // side length let a = 4; document.write(InscribedCircleArea(n, a).toFixed(4)); // This code is contributed by 29AjayKumar </script>
37.6801
Complejidad de Tiempo : O(1)
Espacio Auxiliar : O(1)
Publicación traducida automáticamente
Artículo escrito por Chandan_Agrawal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA