백준 2022 - 사다리 (C++)

강승구·2023년 2월 21일
0

피타고라스 정리와 닮음비를 이용한 풀이

x와 y의 높이를 피타고라스정리를 이용해 계산하고 닮음비를 이용해 빌딩 사이의 거리를 c에 관해 정리해준다.
수는 소수점 여섯째 자리까지 주어지므로 오차는 0.001까지 허용되기 때문에 최대 범위와 최소 범위의 차가 0.001보다 큰동안 반복하고 이분탐색을 통해 범위롤 계속 갱신해준다.
그리고 수가 소수점 여섯째 자리까지 주어질 수 있으므로 소수 여섯째자리까지 정확도로 center를 구해 result (건물 사이의 거리)를 구해준다.

코드

#include <iostream>
#include <cmath>

using namespace std;

int main(){
    double x, y, c;
    cin >> x >> y >> c;
    
    double low = 0;
    double high = min(x, y);
    double distance, center, A, B, temp;
    
    while(high-low>0.001){
        center = (low+high)/2.0;
        
        A = sqrt(x*x - center*center);
        B = sqrt(y*y - center*center);
        
        temp = (A*B)/(A+B);
        
        if(temp>=c){
            distance = center;
            low = center;
        }else{
            high = center;
        }
    }
    cout << distance;
}
profile
강승구

0개의 댓글