Dado un cuadrado de lado a , la tarea es encontrar el área del semicírculo más grande que se puede dibujar dentro del cuadrado.
Ejemplos:
Input: a = 3 Output: 4.84865 Input: a = 4 Output: 8.61982
Aproximación
El semicírculo de área máxima inscrito en el cuadrado tiene su diámetro paralelo a una diagonal, y su radio rmax se da como:
- Como la figura es simétrica en la diagonal BD , el ángulo QPB = 45° .
OY = r cos 45 = r/ √2
- Por eso
a = AB = r + r/√2 = r(1 + 1/√2)
- De este modo
r = a / (1 + 1/√2) = a*√2 / (√2 + 1)
- Racionalizando el denominador, obtenemos
r = a*√2*(√2-1)
- De este modo
r = a*2 - a √2 = a*(2-√2)
- Por lo tanto,
Area of the required semicircle = pi * r2/2 = 3.14*(a*(2-√2))2 / 2
- A continuación se muestra la implementación del enfoque anterior:
CPP
// C++ program to find Area of // semicircle in a square #include <bits/stdc++.h> using namespace std; // Function to find area of semicircle float find_Area(float a) { float R = a * (2.0 - sqrt(2)); float area = 3.14 * R * R / 2.0; return area; } // Driver code int main() { // side of a square float a = 4; // Call Function to find // the area of semicircle cout << " Area of semicircle = " << find_Area(a); return 0; }
Java
// Java program to find Area of // semicircle in a square class GFG { // Function to find area of semicircle static float find_Area(float a) { float R = a * (float)(2.0 - Math.sqrt(2)); float area = (float)((3.14 * R * R) / 2.0); return area; } // Driver code public static void main (String[] args) { // side of a square float a = 4; // Call Function to find // the area of semicircle System.out.println(" Area of semicircle = " + find_Area(a)); } } // This code is contributed by AnkitRai01
Python3
# Python3 program to find Area of # semicircle in a square from math import sqrt # Function to find area of semicircle def find_Area(a) : R = a * (2.0 - sqrt(2)); area = 3.14 * R * R / 2.0; return area; # Driver code if __name__ == "__main__" : # side of a square a = 4; # Call Function to find # the area of semicircle print("Area of semicircle =",find_Area(a)); # This code is contributed by AnkitRai01
C#
// C# program to find Area of // semicircle in a square using System; class GFG { // Function to find area of semicircle static float find_Area(float a) { float R = a * (float)(2.0 - Math.Sqrt(2)); float area = (float)((3.14 * R * R) / 2.0); return area; } // Driver code public static void Main (string[] args) { // side of a square float a = 4; // Call Function to find // the area of semicircle Console.WriteLine(" Area of semicircle = " + find_Area(a)); } } // This code is contributed by AnkitRai01
Javascript
<script> // Javascript program to find Area of // semicircle in a square // Function to find area of semicircle function find_Area(a) { var R = a * (2.0 - Math.sqrt(2)); var area = 3.14 * R * R / 2.0; return area; } // Driver code // side of a square var a = 4; // Call Function to find // the area of semicircle document.write(" Area of semicircle = " + find_Area(a)); // This code is contributed by rutvik_56. </script>
Producción:
Area of semicircle = 8.61982
Complejidad de tiempo : O(1)
Espacio Auxiliar: O(1)
- Referencia: http://www.qbyte.org/puzzles/p153s.html