HDU 5858 Hard problem (公式推导)

重新组织推导+coding~
比赛的时候PI开小结果WAWAWAT-T;
所以以后都写PI=acos(-1.0)

这里写图片描述

我们截取其中扇形一小部分 SPBQ 进行计算,最后将结果*4;

|AB|=L |OB|=L2 |AO|=2L2
利用边长的关系分别求出 cosA cosB cosCA B C

SPBQ=SOBQSOBP

SOBQ=πC2ππ(L2)2

SOBP=SABPSΔABO
SABP=A2ππL2
SΔABO=12L2LsinB

以上的量进行代换,最后可得出总阴影面积:
4SPBQ=4(πC8L2(A2L2L24sinB))
=L2(πC22A+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);  


    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值