uva 10566 - Crossed Ladders(几何+二分)

来源:互联网 发布:淘宝女士棉袄 编辑:程序博客网 时间:2024/05/22 13:33

题目链接:uva 10566 - Crossed Ladders


二分答案,几何计算出对应的H,与C比较


#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;const double eps = 1e-9;double X, Y, C;double solve (double a) {double hx = sqrt(X * X - a * a);double hy = sqrt(Y * Y - a * a);return hx * hy / (hx + hy);}double search(double l, double r) {while (r - l > eps) {double mid = (r + l) / 2;if (solve(mid) > C)l = mid;elser = mid;}return l;}int main () {while (scanf("%lf%lf%lf", &X, &Y, &C) == 3) {printf("%.3lf\n", search(0, min(X, Y)));}return 0;}


0 0
原创粉丝点击