해결한 사람
0
명
정답률
0.00
%
시간 제한
2000
ms
메모리 제한
245
MB
당신은 숙련된 Codeforces 사용자이다. 오늘 당신은 Codeforces에서 활동하는 동안 y번 제출했고, 그중 x번 성공했다는 사실을 알게 되었다. 따라서 현재 Codeforces에서의 성공률은 x / y와 같다.
[0;1] 범위에 있는 당신이 가장 좋아하는 유리수는 p / q이다. 이제 성공률을 p / q로 만들고 싶다면 제출을 최소 몇 번 더 해야 하는지 궁금해졌다.
첫 번째 줄에는 테스트 케이스의 수인 하나의 정수 t (1 ≤ t ≤ 1000)가 주어진다.
이어지는 t개의 각 줄에는 네 정수 x, y, p, q (0 ≤ x ≤ y ≤ 109; 0 ≤ p ≤ q ≤ 109; y > 0; q > 0)가 주어진다.
p / q가 기약분수임이 보장된다.
해킹. 해킹에서는 t ≤ 5라는 추가 제약 조건을 만족해야 한다.
각 테스트 케이스마다 성공률을 가장 좋아하는 유리수와 같게 만들기 위해 추가로 해야 하는 제출의 최소 횟수를 나타내는 하나의 정수를 출력한다. 이를 달성할 수 없다면 -1을 출력한다.
4
3 10 1 2
7 14 3 8
20 70 2 7
5 6 1 1
4
10
0
-1
첫 번째 예제에서는 성공하는 제출을 4번 해야 한다. 성공률은 7 / 14, 즉 1 / 2가 된다.
두 번째 예제에서는 성공하는 제출을 2번, 실패하는 제출을 8번 해야 한다. 성공률은 9 / 24, 즉 3 / 8이 된다.
세 번째 예제에서는 새로운 제출을 할 필요가 없다. 성공률은 이미 20 / 70, 즉 2 / 7이다.
네 번째 예제에서는 단 한 번의 실패한 제출 때문에 성공률을 1과 같게 만들 수 없게 된다.