• 清北学堂 站军姿


    /*2bc*cosA=b^2+c^2-a^2 模拟计算 50分*/
    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    const double t=3.1415926535898;
    int n;
    double a,b,c,x,y,z,x2,y2,z2,s,k,m,w,p;
    int main ()
    {
        freopen ("standing.in","r",stdin);
        freopen ("standing.out","w",stdout);
        scanf ("%d",&n);
        for (int i=1;i<=n;i++)
        {
            scanf ("%lf%lf%lf%lf%lf%lf",&x,&y,&z,&x2,&y2,&z2);
            if (sqrt(abs(x-x2)*abs(x-x2)+abs(y-y2)*abs(y-y2))>z+z2)
                printf ("%.3lf
    ",z*z*t+z2*z2*t);
            else if ((x+z>x2+z2&&x-z<x2-z2&&y+z>y2+z2&&y-z<y2-z2)||(x+z<x2+z2&&x-z>x2-z2&&y+z<y2+z2&&x-z>y2-z2))
                printf ("%.3lf
    ",max(z*z*t,z2*z2*t));
            else 
            {
                s=z*z*t+z2*z2*t;
                k=sqrt(abs(x-x2)*abs(x-x2)+abs(y-y2)*abs(y-y2));
                a=(z*z-z2*z2+k*k)/(2*k);
                b=k-a;
                
                c=2*sqrt(z*z-a*a);
                w=(2*z*z-c*c)/(2*z*z);
                p=acos(w);
                m=(z+z+c)/2;
                s-=((p*z*z)/2-sqrt(m*(m-c)*(m-z)*(m-z)));
                
                c=2*sqrt(z2*z2-b*b);
                w=(2*z2*z2-c*c)/(2*z2*z2);
                p=acos(w);
                m=(z2+z2+c)/2;
                s-=((p*z2*z2)/2-sqrt(m*(m-c)*(m-z2)*(m-z2)));
                printf ("%.3lf
    ",s);
            }
        }
        return 0;
    }
  • 相关阅读:
    分解质因数算法
    js 的 Math 对象
    字符串操作
    简化求质数算法
    数值类型小数点后是否可以接零问题
    新博第一篇,思考的重要性与求质数算法
    一、制作屏幕录像
    四、同步线程
    常见问题
    jni数据处理
  • 原文地址:https://www.cnblogs.com/xiaoqi7/p/5932997.html
Copyright © 2020-2023  润新知