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

题意:

已知正方形边长,圆是内切圆,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;
}


继续加油~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值