链接
传送门
题意
两个梯子放置在交叉靠在墙上,长度分别为\(x\)和\(y\),交点离地面的高度为\(c\),求两个墙间的距离。
思路
根据相似关系列方程,二分答案。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #include <cstdio> #include <cstring> #include <algorithm> #include <cmath>
using namespace std;
const double eps = 1e-8; double x, y, c;
double cal(double k) { return c / sqrt(x * x - k * k) + c / sqrt(y * y - k * k); }
int main() { while (~scanf("%lf%lf%lf", &x, &y, &c)) { if (x > y) { swap(x, y); } double L = 0, R = x; while (R - L > eps) { double M = (L + R) / 2; if (cal(M) < 1) { L = M; } else { R = M; } } printf("%.3f\n", (L + R) / 2); } return 0; }
|