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;
}