99分求助
查看原帖
99分求助
285617
黑影洞人楼主2022/7/22 22:21
#include<cstdio>
#include<algorithm>
using namespace std;
const double eps=0.0000001;
int T;
double D,H,h;
double f(double x){
	if(x<=D*(H-h)/H)return x*h/(H-h);
	else if(x<=D) return D-x+H-D*(H-h)/x;
}
signed main(){
	scanf("%d",&T);
	while(T--){
		scanf("%lf%lf%lf",&H,&h,&D);
		double l=0,r=D;
		while(r-l>=eps){
			double lmid=l+(r-l)/3,rmid=r-(r-l)/3;
			if(f(lmid)>f(rmid))r=rmid;
			else l=lmid;
		}
		double res=max(f(l),f(r));
		printf("%.3lf\n",(int)(res*10000)%10>=5?res+0.0005:res);
	}
	return 0;
}
2022/7/22 22:21
加载中...