Space 2022: 사다리 – 기하학, 이분 탐색

https://www.acmicpc.net/problem/2022

2022: 사다리

첫 번째 줄에는 x, y, c에 해당하는 세 개의 양의 실수가 순서대로 입력됩니다. 숫자는 소수점 이하 6자리까지 지정할 수 있으며 3,000,000,000보다 작거나 같습니다.

www.acmicpc.net

1. 방정식 유도 – 숫자의 유사성을 이용하여 방정식을 구합니다.

2. 이분 검색을 사용한 대략적인 유도

#define _SILENCE_ALL_CXX20_DEPRECATION_WARNINGS
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

double x, y, c;
double ans;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);

    cin >> x >> y >> c;
    double l{ 0 }, r{ min(x, y) };
    double m;

    while (r - l >= 0.0001)
    {
        m = (l + r) / 2;
        double tmp = 1 / (1 / sqrt(pow(x, 2) - pow(m, 2))
            + (1 / sqrt(pow(y, 2) - pow(m, 2))));

        if (tmp > c) l = m;
        else if (tmp < c) r = m;
    }
    cout << m;
}