您的位置:首页 > 其它

HDU-5858 Hard problem(数学公式、计算几何)

2017-09-14 01:49 316 查看
题意:

已知正方形边长,圆是内切圆,1/4圆半径等于正方形边长,求图中阴影部分的面积。

思路:



对于我这种高中毕业之后就再没做过几何的人还是挺困难的,乱七八糟的公式都忘掉了。

做完辅助线之后,其实就是求两个扇形的面积和两个三角形的面积,可以找出如图三个边长,然后根据余弦定理可以求得cos∠1和cos∠2进而得到两个角度,然后根据扇形弧长公式和扇形面积公式可以求得扇形弧长以及面积,然后再根据正弦定理可以求得两个三角形的面积,最后加减组合一下就是一个阴影面积,然后再*2就是答案。

补充:

余弦定理:对于任意三角形,任何一边的平方等于其他两边平方的和减去这两边与它们夹角的余弦的两倍积,即a^2 = b^2+c^2-2bccos(α)。

正弦定理:在任意三角形中,角A、B、C所对的边长分别为a、b、c,三角形外接圆的半径为R。则有:


变形:a = 2RsinA, b = 2RsinB, c = 2RsinC

三角形面积公式:S = 1/2bcsinA = 1/2acsinB = 1/2absinC

扇形弧长公式:L = α×r = nπr/180,其中α是圆心角弧度,n是圆心角度数,r是半径。

扇形面积公式:S = L×R/2 = α×R^2/2,其中α是圆心角弧度,L是弧长,R是半径。

代码:

#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
int t, l;
int main()
{
for(scanf("%d", &t); t--;)
{
scanf("%d", &l);
double th1 = 2*acos(5*sqrt(2)/8);
double th2 = 2*(pi-acos(sqrt(2)/-4));
double L1 = th1*l;
double L2 = th2*(l/2.0);
double s1 = L1*l/2;
double s2 = L2*(l/2.0)/2;
double s3 = l*l*sin(th1)/2;
double s4 = l/2.0*l/2.0*sin(th2)/2;
double area = s2-(s1-s3)-s4;
printf("%.2f\n", area*2);
}
return 0;
}

继续加油~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: