[백준 c++] 1072 게임

jw·2022년 11월 18일
0

백준

목록 보기
88/141
post-thumbnail

문제

https://www.acmicpc.net/problem/1072
앞으로 몇 번 더 게임을 해야 승률이 오르는지 구하는 문제

풀이

몇번 더해야 z값이 바뀌는지 구해야한다.
몇 번에 대한 값을 특정 범위 내에서 찾아야하기 때문에 이분 탐색을 이용해서 풀 수 있다.

코드

#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
ll x, y, mid, res;
int main()
{
    cin >> x >> y;
    ll z = y * 100 / x;
    ll lo = 0, hi = 1e9;
    
    while (lo <= hi)
    {
        mid = (lo + hi) / 2;
        if ((y + mid) * 100 / (x + mid) > z)
        {
            res = mid;
            hi = mid - 1;
        }
        else
            lo = mid + 1;
    }

    cout << (res ? res : -1) << "\n";
    return 0;
}
profile
다시태어나고싶어요

0개의 댓글