HDU

来源:互联网 发布:关于人工智能英语作文 编辑:程序博客网 时间:2024/05/29 02:51
#include<bits/stdc++.h>using namespace std;const double eps = 1e-8;  const double PI = acos(-1.0);struct point{    double x,y;}q[2];double dis(point a,point b){    return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}double S(point c1,double r1,point c2,double r2){    double d = dis(c1,c2);    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 _;    cin>>_;    double l;    double r1,r2;    while(_--)    {        scanf("%lf",&l);        q[0].x = l/2,q[0].y=l/2;        r1=l/2;        q[1].x=l,q[1].y=0;        r2=l;        double ans = PI*r1*r1;        double res = ans - S(q[0],r1,q[1],r2);        printf("%.2f\n",2*res);    }    return 0;}