杭电-5858-几何,思维

xiaoxiao2021-02-27  202

原题链接

题意:求正方形内阴影面积。

一个几何题想了无数方法,求角然后还是不会。百度答案,百度出三种都看看,各有各好处。

先展示一个最好想的,但是代码有点点麻烦的 点击打开链接 

首先连接辅助线

方法三-有详解

余弦定理求∠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);

具体思路差不多但是代码就很简单了。

 

方法二-巨简单

方法三-有详解

转载请注明原文地址: https://www.6miu.com/read-15936.html

最新回复(0)