AcWing 1510. 楼梯
原题链接
简单
作者:
不幸到吃土
,
2024-12-27 16:59:44
,
所有人可见
,
阅读 1
//数学题!设两楼间的距离为s,分别由m和n构成; x和y两侧的对应楼高分别为a和b
//由相似三角形可知: c/a = n/s ① c/b = m/s ② m + n = s ③ 可求出:c=a*b/(a+b) 由此根据a、b、c可二分出距离s
#include <iostream>
#include <math.h>
#include <algorithm>
using namespace std;
double x,y,c;
bool check(double mid){
double a = sqrt(x*x - mid*mid);
double b = sqrt(y*y - mid*mid);
return a*b/(a+b) > c;
}
int main(){
cin >> x >> y >> c;
double l = 0, r = min(x,y);
while(r - l > 1e-5){
double mid = (l+r)/2;
if(check(mid)){
l = mid;
}else{
r = mid;
}
}
printf("%.3f",l);
return 0;
}
具体推导看y总视频