#include <stdio.h>
#include <algorithm>
#include <math.h>
using namespace std;
double H,h,D;
double cal(double x){
return ( h*D - H*x )/(D- x) + x;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%lf %lf%lf",&H,&h,&D);
double mid , midmid;
double low = 0 ,high = D * (h/H),esp =1e-6;
while(high - low >= esp){
mid = (low+ high) / 2;
midmid =(high + mid) / 2;
doublecmid = cal(mid);
doublecmidmid = cal(midmid);
if(cmid> cmidmid)
high = midmid;
else
low = mid;
}
printf("%.3lf\n",cal(low));
//printf("%.3lf\n",cal(D-sqrt((H-h)*D)));直接求导求出极值点可证明
}
return 0;
}
zoj3203(三分)
最新推荐文章于 2019-04-07 14:02:11 发布