有两把梯子搭在墙上,给出这两把梯子的长度 x,y,以及他们的交点,交点的高度为 h,求这两个房屋之间的距离
![]()
如上图所示,易证红色内有两个三角形相似和绿色内有两个三角形相似
所以有:
double x,y,h;
bool C(double aim)
{
double ans=1.0/sqrt(x*x-aim*aim)+1.0/sqrt(y*y-aim*aim);
if(ans<1/h) return true;
else return false;
}
int main()
{
//IOS;
while(~sfff(x,y,h)){
double l=0,r=min(x,y),mid;
while(r-l>eps){
mid=(l+r)/2;
if(C(mid)){
l=mid;
}
else{
r=mid;
}
}
printf("%.3lf\n",mid);
}
//PAUSE;
return 0;
}