原题链接
题意:求正方形内阴影面积。
一个几何题想了无数方法,求角然后还是不会。百度答案,百度出三种都看看,各有各好处。
先展示一个最好想的,但是代码有点点麻烦的 点击打开链接
首先连接辅助线
方法三-有详解
余弦定理求∠1和∠2,然后求三角形
用a为边的 大扇形减去大三角形求出小弓形
用a/2为边 小扇形减去小三角形求出大弓形
最后 ans = 2*(大弓形-小弓形)
AC代码:
#include<stdio.h> #include<string.h> #include<algorithm> #include<math.h> using namespace std; const double pi=acos(-1.0); int main() { int t; scanf("%d",&t); while(t--) { double l; scanf("%lf",&l); double ans=acos((double)(5*sqrt(2)*1.0)/8.0); ans=ans*1.0/pi*180.0; ans*=2; double shan1=ans*1.0/360*1.0*pi*l*l; double sanjiaoxing=sqrt(7*1.0/32*1.0)*5*sqrt(2.0)/8.0*l*l; double xiaogongxing=shan1-sanjiaoxing; double ans2=acos((double)(-sqrt(2)*1.0/4.0)); ans2=ans2/pi*180.0; ans2=180-ans2; ans2*=2; double shan2=ans2*1.0/360*1.0*pi*(l*1.0/2*1.0)*(l*1.0/2*1.0); double sanjiaoxing2=sqrt(7*1.0/32*1.0)*sqrt(1*1.0/32*1.0)*l*l; double dagongxing=(shan2-sanjiaoxing2); printf("%.2lf\n",2*(dagongxing-xiaogongxing)); } }剩下两种似乎都用到了海伦公式
(海伦公式:已知三角形三边求三角形面积:S=sqrt(p*(p-a)*(p-b)*(p-c)),p=(a+b+c)/(2*1.0);)
具体思路差不多但是代码就很简单了。
方法二-巨简单
方法三-有详解