-
https://www.acmicpc.net/problem/1072
아이디어
이진탐색을 이용하였습니다.
#include <iostream> #define MAX 1000000000 using namespace std; long long X, Y, Z; void input() { cin >> X >> Y; Z = Y * 100LL / X; } bool check(long long mid) { long long nY = ((Y+mid) * 100LL / (X+mid)); return nY > Z; } void solution() { long long l = 0; long long r = MAX; //승률이 99이상이면 바뀌지 않음 if (Z >= 99) { cout << -1; return; } while (l + 1 < r) { long long mid = (l + r) >> 1; //승률이 높아졌을때 게임의 수 줄임 if (check(mid)) { r = mid; } else { l = mid; } } cout <<r; } int main(void) { input(); solution(); }
'알고리즘 > 백준' 카테고리의 다른 글
BOJ 2613 숫자구슬 / C++ (0) 2022.12.04 BOJ 1939 중량제한 / C++ (0) 2022.12.03 BOJ 18428 감시 피하기 / C++ (0) 2022.12.03 BOJ 2632 피자판매 / C++ (1) 2022.12.03 BOJ 3109 빵집 / C++ (2) 2022.09.15 댓글