카레 만들기
시간 제한8초메모리 제한512 MB
물 W0리터에 루 R0그램이 녹아 있는 카레에 R그램짜리 루를 X조각 추가하고 물을 얼마든 더 부어 농도를 정확히 C g/L로 만들 때, X의 최솟값을 구한다.
문제
ACM-ICPC 지역 예선이 다가와 연습에 박차를 가하고 싶었던 당신은 친구 집에서 열리는 경쟁 프로그래밍 합숙에 참가하기로 했다. 참가자들의 고집으로 식사는 직접 해 먹기로 했다.
합숙 첫날 밤, 참가자들은 그날의 연습을 마치고 저녁 준비에 들어갔다. 경쟁 프로그래밍뿐만 아니라 요리에서도 "프로"라는 말을 친구에게 자주 듣는 당신은 맡은 메뉴를 순식간에 다 만들어 버려 시간이 남아돌았다. 그래서 다른 사람이 맡은 카레 만들기를 도와주기로 했다.
지금 W0 [L]의 물에 R0 [g]의 루를 섞은 만들다 만 카레가 있다. 이번에 쓰는 루는 한 종류이고, 1개당 R [g]이다. 루는 충분히 많이 비축되어 있다. 당신은 이 루를 쓸 경우 농도가 C [g/L]인 카레가 가장 맛있다고 생각하므로, 이 카레에 루와 물을 적절히 더해 농도를 C [g/L]로 만들고 싶다. 여기서 루 R0 [g]이 물 W0 [L]에 녹아 있는 카레의 농도는 R0 / W0 [g/L]이고, 이 카레에 R [g]의 루를 X개와 물 Y [L]를 더하면 그 농도는 (R0 + X R) / (W0 + Y) [g/L]가 된다. 루가 많이 있기는 하지만 너무 많이 쓰는 것은 좋지 않다고 생각한 당신은, 더하는 루의 개수를 되도록 적게 하여 농도 C [g/L]인 카레를 만들기로 했다.
농도 R0/W0 [g/L]인 카레에 루나 물 중 하나, 또는 둘 다를 적절히 더해 농도 C [g/L]인 카레를 만들 때, 더해야 할 루의 개수 X의 최솟값을 구하시오.
단, 이번 카레 만들기에서는 다음 사항에 주의한다.
- 더하는 루의 개수 X는 0 이상의 정수여야 한다. 즉, 루를 1/3개만 더하는 것과 같은 일은 할 수 없다.
- 더하는 물의 부피 Y는 0 이상의 실수이면 되고, 정수일 필요는 없다.
- 루나 물 중 하나, 또는 둘 다를 더하지 않아도 농도 C인 카레를 만들 수 있는 경우도 있다.
- 루와 물은 충분히 확보되어 있으므로, 루나 물이 부족해 농도 C인 카레를 만들 수 없는 상황은 일어나지 않는다고 봐도 좋다.
입력
입력은 여러 데이터셋으로 이루어진다. 각 데이터셋은 1행으로 이루어지며, 다음 형식으로 주어진다.
R0 W0 C R
여기서 R0, W0, C, R은 각각 만들다 만 카레에 이미 녹아 있는 루의 질량 [g], 카레에 들어 있는 물의 부피 [L], 당신이 만들고 싶은 카레의 농도 [g/L], 루 1개당 질량 [g]을 나타낸다. 이 값들은 모두 1 이상 100 이하의 정수이다. 입력의 끝은 공백으로 구분된 네 개의 0으로 이루어진 행으로 나타낸다.
출력
각 데이터셋에 대해, W0 [L]의 물에 R0 [g]의 루를 섞은 만들다 만 카레에서 농도 C인 카레를 만들기 위해 더해야 하는 루의 개수의 최솟값을 1행에 출력한다. 더하는 물의 양을 출력해서는 안 된다.
입력 제약에 따라, 각 데이터셋의 답인 루 개수의 최솟값은 32비트 부호 있는 정수로 표현되는 범위에 들어감이 보장된다.