给定边a的正方形,任务是找到可以在正方形内部绘制的最大半圆的面积。
例子:
Input: a = 3
Output: 4.84865
Input: a = 4
Output: 8.61982
方法
内接于正方形的最大面积的半圆的直径平行于对角线,其半径rmax表示为:
- 由于该图在对角线BD中是对称的,因此角度QPB = 45° 。
OY = r cos 45 = r/ √2
- 因此
a = AB
= r + r/√2
= r(1 + 1/√2)
- 因此
r = a / (1 + 1/√2)
= a*√2 / (√2 + 1)
- 使分母合理化,我们获得
r = a*√2*(√2-1)
- 因此
r = a*2 - a √2
= a*(2-√2)
- 因此,
Area of the required semicircle
= pi * r2/2
= 3.14*(a*(2-√2))2 / 2
- 下面是上述方法的实现:
CPP
// C++ program to find Area of
// semicircle in a square
#include
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
输出:
Area of semicircle = 8.61982
- 参考: http : //www.qbyte.org/puzzles/p153s.html