Notice
Recent Posts
Recent Comments
Link
반응형
공부혜옹
백준 2022번 사다리 본문
주어진 x와 y로 mid를 구한 후 기울기와 피타고라스정리를 이용하여 c를 정의한다. while 문의 조건을 정할때 기준은 수는 소수점 여섯째 자리까지 주어진다는 조건을 이용해 범위가 0.000001보다 큰동안 반복한다는것으로 설정해주었다. while문을 반복하며 이분탐색을 통하여 mid를 구하며 c와 비교해주면서 정답을 찾는다.
절대/상대 오차는 0.001 까지 허용한다는게 무슨 말인지 몰랐는데 알아보니 그냥 소수 셋째자리까지 출력해주는것이었다;;ㅜㅜ
#include <iostream>
#include <cmath>
using namespace std;
double x, y, c;
double func(double mid){
double h1 = sqrt(pow(x,2) - pow(mid,2));
double h2 = sqrt(pow(y,2) - pow(mid,2));
return (h1 * h2)/(h1 + h2);
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> x >> y >> c;
double first = 0;
double end = min(x, y);
double ans = 0;
while(end - first > 0.000001){
double mid = (first + end) / 2;
if(func(mid) >= c){
ans = mid;
first = mid;
}
else
end = mid;
}
cout<<fixed;
cout.precision(3);
cout<<ans<<endl;
return 0;
}
반응형
'공부합시다 > Algorithm' 카테고리의 다른 글
백준 4256번 트리 (0) | 2021.04.13 |
---|---|
백준 1074번 Z (0) | 2021.04.13 |
백준 1477번 휴게소 세우기 (0) | 2021.04.07 |
백준 11812번 K진 트리 (0) | 2021.04.07 |
백준 2585번 경비행기 (0) | 2021.04.01 |
Comments