还能再优化精度吗。卡在94pts
#include <bits/stdc++.h>
using namespace std;
int t;
double D,H,h,b,eps=0.00000001;
double l,r,fl,fr,mid;
double check(double x)
{
if(x<=b) return h*x/(H-h);
else return D-x+H-D*(H-h)/x;
}
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%lf%lf%lf",&H,&h,&D);
b=D*(H-h)/H;
l=0.0;r=D;
while(r-l>eps)
{
mid=(l+r)/2;
fl=mid-eps;
fr=mid+eps;
if(check(fl)>check(fr)) r=mid;
else l=mid;
}
printf("%.3lf\n",check(l));
}
return 0;
}