/*UVA11524 平面几何: 使用到的知识比较零碎: 1、三角形内切圆是角平分线的交点,所以连接圆心和顶点,能产生3对全等三角形 2、利用等量关系表示其他量 3、求三角形的两种方法:海伦公式+周长*半径/2 4、当代数式太复杂,手动难以化简,考虑用计算方法二分解决。 */ #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> #include<stdlib.h> #include<math.h> #include<queue> #include<vector> #include<map> #define LL long long using namespace std; //输入 r,m1, n1, m2, n2, m3 and n3 double r,m1,n1,m2,n2,m3,n3; int t; double Helen(double a) { double b=(m3+n3)/n3*m1/(n1+m1)*a; double c=(m2+n2)/m2*n1/(m1+n1)*a; double k=(a+b+c)/2; return sqrt(k*(k-a)*(k-b)*(k-c)); } double F(double x)//x是二分变量AB { double b=(m3+n3)/n3*m1/(n1+m1)*x; double c=(m2+n2)/m2*n1/(m1+n1)*x; double hel=Helen(x); double Fx=hel*2/(x+b+c)-r; return Fx; } int main() { cin>>t; while(t--) { cin>>r>>m1>>n1>>m2>>n2>>m3>>n3; double L=0,R=10000000; while(R-L>1e-7)//F(x)单调递增,先负后正 { double x=(L+R)/2; double Fx=F(x); if (Fx<0) L=x;else R=x; } printf("%.5lf ",Helen(L)); } return 0; }