题意:两栋楼之间有两个梯子,如下图中的虚线所示,一个梯子的长度为x,另一个梯子的长度为y,两个梯子的交点离地面的高度为c,问两栋楼之间的距离。
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=20835#problem/G
——>>几何题,设宽度为w,交点距右楼距离为u,则
利用相似三角形推出关系:
解方程,这是一个减函数,二分答案即可。
(方程左边成一个函数,减函数,求根)
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
#define F(u) 1.0/sqrt(x*x-u*u) + 1.0/sqrt(y*y-u*u) - 1.0/c
int main()
{
double x, y, c;
while(cin>>x>>y>>c)
{
double R = (x < y) ? x : y, L = 0, M;
for(int i = 0; i < 100; i++)
{
M = L + (R-L) / 2;
if(F(M) >= 0) R = M;
else L = M;
}
cout<<setiosflags(ios::fixed)<<setprecision(3)<<L<<endl;
}
return 0;
}