您的位置:首页 > 其它

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

2015-08-15 10:50 375 查看
题目链接: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;
else
r = mid;
}
return l;
}

int main () {
while (scanf("%lf%lf%lf", &X, &Y, &C) == 3) {
printf("%.3lf\n", search(0, min(X, Y)));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: