풀이
더보기
x의 범위가 크기 때문에 1씩 증가시키는 방법으로 풀면 시간초과가 나게 된다.
따라서 이분 탐색을 통해 풀어야 한다.
이 때, 99% 승률에서는 100%가 될 수 없다는 점을 유의하여 예외로 처리해주어야 한다.
소스 코드
더보기
#include <iostream>
using namespace std;
long long x, y, z;
int main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> x >> y;
z = (y * 100) / x;
//바뀌지 않는 경우
if(z >= 99){
cout << -1;
return 0;
}
long long left = 0, right = 1000000000;
while(left <= right){
long long mid = (left + right) / 2;
long long temp = ((y + mid) * 100) / (x + mid);
if(z >= temp){
left = mid + 1;
}
else{
right = mid - 1;
}
}
cout << left;
}
'Koala - 2기 > C반' 카테고리의 다른 글
[BOJ] 1260번. DFS와 BFS (0) | 2021.02.21 |
---|---|
[BOJ] 2346번. 풍선 터뜨리기 (0) | 2021.02.18 |
[17266번] 어두운 굴다리 (0) | 2021.02.03 |
Unordered_set : 호다닥 찾아버리기(+BOJ 수찾기) (0) | 2021.02.02 |
9517번 i love croatia (0) | 2021.01.25 |