重新组织推导+coding~
比赛的时候PI开小结果WAWAWAT-T;
所以以后都写PI=acos(-1.0);
我们截取其中扇形一小部分 SPBQ 进行计算,最后将结果*4;
|AB|=L |OB|=L2 |AO|=2√L2
利用边长的关系分别求出
cos∠A cos∠B cos∠C以及∠A ∠B ∠C
SPBQ=SOBQ−SOBP
SOBQ=π−C2π∗π(L2)2
SOBP=SABP−SΔABO
SABP=A2π∗πL2
SΔABO=12∗L2∗L∗sinB
以上的量进行代换,最后可得出总阴影面积:
4∗SPBQ=4∗(π−C8∗L2−(A2∗L2−L24∗sinB))
=L2∗(π−C2−2A+sinB)
然后敲代码写出来就OK了
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
const double PI=acos(-1.0);
int main(){
int t;
scanf("%d",&t);
while(t--){
double l;
scanf("%lf",&l);
double A=acos(5.0/8.0*sqrt(2.0));
double B=sin(acos(3.0/4.0));
double C=acos(-sqrt(2.0)/4);
double S=l*l*((PI-C)/2.0-2.0*A+B);
printf("%.2f\n",S);
}
}