Description
求下图阴影部分面积
Input
第一行一整数T表示用例组数,每组用例输入一个整数L表示正方形边长(1<=T,L<=10000)
Output
对于每组用例,输出阴影部分面积,结果保留到小数点后两位
Sample Input
1
1
Sample Output
0.29
Solution
计算几何
Code
#include<cstdio>
#include<cmath>
using namespace std;
#define maxn 1111
const double pi=acos(-1.0);
int T;
double l;
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%lf",&l);
double A=acos(5.0*sqrt(2.0)/8.0);
double B=2.0*A;
double C=acos(3.0/4.0);
double D=(pi-B)/2.0-C;
double E=2.0*D;
double s1=E*l*l/4.0;
double s2=2.0*(B*l*l/2.0-sin(B)*l*l/2.0);
double s3=2.0*(sin(2.0*D)*l*l/8.0);
double ans=pi*l*l/4.0-s1-s2-s3;
printf("%.2f\n",ans);
}
return 0;
}