清北学堂 站军姿
Posted 丿球痞D小七
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了清北学堂 站军姿相关的知识,希望对你有一定的参考价值。
/*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\\n",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\\n",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\\n",s); } } return 0; }
以上是关于清北学堂 站军姿的主要内容,如果未能解决你的问题,请参考以下文章