BOJ 1072번 게임 문제

이분탐색으로 풀면 된다. 99%일때 예외 경우를 따로 해줘야한다. 1패라도 있으면 승률이 100%가 될 수 없다.

1072.cpp

#include <bits/stdc++.h>
#define MAX_ 1000000000
using namespace std;
typedef long long ll;
int main() {
    ll x, y, z, low, high, mid, test_z;
    cin >> x >> y;
    z = 100 * y / x;
    if (z >= 99) {
        cout << -1;
        return 0;
    }

    low = 0;
    high = MAX_;

    while (low <= high) {
        mid = (low + high) / 2;
        test_z = 100 * (y + mid) / (x + mid);
        if (z < test_z) {
            high = mid - 1;
        } else {
            low = mid + 1;
        }
    }
    cout << low;
}

+ Recent posts