关闭

HDU-5858-Hard problem(几何)

标签: HDUACM
137人阅读 评论(0) 收藏 举报
分类:

链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5858

题意:知道正方形边长,求阴影部分面积


题解:直接求出两圆相交部分面积。

CODE:


#include <bits/stdc++.h>
using namespace std;
#define PI acos(-1)
#define eps 1e-5
double Area_of_overlap(double d,double r1,double r2)
{
    if(r1 + r2 < d + eps)return 0;
    if(d < fabs(r1 - r2) + eps)
    {
        double r = min(r1,r2);
        return PI*r*r;
    }
    double x = (d*d + r1*r1 - r2*r2)/(2*d);
    double t1 = acos(x / r1);
    double t2 = acos((d - x)/r2);
    return r1*r1*t1 + r2*r2*t2 - d*r1*sin(t1);
}
int main()
{
    int t;
    double l;
    double d;
    double r1,r2;
    double ans;
    double s;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lf",&l);
        d=sqrt(2.0)/2.0*l;
        r1=l;
        r2=l/2.0;
        s=PI*r2*r2;
        ans=Area_of_overlap(d,r1,r2);
        ans=2*(s-ans);
        printf("%.2lf\n",ans);
    }
    return 0;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:99478次
    • 积分:4860
    • 等级:
    • 排名:第5826名
    • 原创:396篇
    • 转载:2篇
    • 译文:0篇
    • 评论:36条
    文章分类
    最新评论