Is This Integration ?
Input: Standard Input
Output: Standard Output
Time Limit: 3 seconds
In the image below you can see a square ABCD, where AB = BC = CD = DA = a. Four arcs are drawn taking the four vertexes A, B, C, Das centers and a as the radius. The arc that is drawn taking A as center, starts at neighboring vertex B and ends at neighboring vertex D. All other arcs are drawn in a similar fashion. Regions of three different shapes are created in this fashion. You will have to determine the total area if these different shaped regions.

Input
The input file contains a floating-point number a (a>=0 a<=10000) in each line which indicates the length of one side of the square. Input is terminated by end of file.
Output
For each line of input, output in a single line the total area of the three types of region (filled with different patterns in the image above). These three numbers will of course be floating point numbers with three digits after the decimal point. First number will denote the area of the striped region, the second number will denote the total area of the dotted regions and the third number will denote the area of the rest of the regions.
Sample Input:
0.10.2
0.3
Sample Output:
0.003 0.005 0.0020.013 0.020 0.007
0.028 0.046 0.016
Shahriar Manzoor
设中间那块面积为x,四个角的面积为y,四个凹形的面积为z

则有
x+4y+4z=a^2
x+3y+2z=pi/4*a^2
x+2y+z=(pi/3-√3/4)a^2 (2个扇形-中间重叠的三角形)
解出:
x=(1+pi/3-√3)*a^2
y=(pi/12+√3/2-1)*a^2
z=(-pi/6+1-√3/4)*a^2
另:注意pi的精度
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<functional>
#include<iostream>
#include<cmath>
using namespace std;
#define MAXa (10000)
double a;
const double pi=3.141592653589793;
int main()
{
while (scanf("%lf",&a)!=EOF)
{
printf("%.3lf %.3lf %.3lf\n",a*a*(1+pi/3-sqrt(3.0)),a*a*(pi/3+2*sqrt(3.0)-4),a*a*(-2*pi/3+4-sqrt(3.0)));
}
return 0;
}
本篇博客介绍了一种计算由四个相交圆弧与一个正方形构成的特定图形中三种不同形状区域面积的方法,并提供了一个C++实现示例。
187

被折叠的 条评论
为什么被折叠?



