January 18, 2022
백준 문제 링크 : https://www.acmicpc.net/problem/1072
게임의 승률이 향상 되기까지의 총 문제를 해결한 횟수를 구해야한다.
그냥 for문을 돌리면 X에 1,000,000,000 을 해버리면 시간초과가 나온다.
게임을 해도 승률이 변하지 않으면 -1을 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static long X, Y, firstZ;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
X = Integer.parseInt(st.nextToken());
Y = Integer.parseInt(st.nextToken());
long t = 0;
firstZ = (Y)*100/X;
if(firstZ >= 99){
System.out.println(-1);
} else{
binarySearch(1,X);
}
}
static void binarySearch(long start, long end){
long mid = 0, Z = 0;
while(start <= end ){
mid = (start + end) / 2;
Z = (Y + mid) * 100 / (X+mid);
if(Z > firstZ){
end = mid - 1;
} else {
start = mid+1;
}
}
System.out.println(start);
}
}