import java.util.*;
public class Main
{
static int N, M, x, y, T;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
T = in.nextInt();
for(int i=0; i < T; i++){
M = in.nextInt();
N = in.nextInt();
x = in.nextInt();
y = in.nextInt();
if(y == N){ // N으로 나눴을 때 y 가 0일 경우를 대비하여 먼저 y를 0으로 바꾼다
y = 0;
}
int MAXxy = M * N; // 가장 최대
int idx = 0;
int res = -1;
while(true){
if((M * idx + x) % N == y){
res = M * idx + x;
break;
}
if(M * idx + x> MAXxy){ // 해가 없을 때
break;
}
idx++;
}
System.out.println(res);
}
}
}
조건 1.
M으로 나눴을 때 항상 x 를 식으로 표현 => M * idx + x
조건 2.
조건 1에 부합하면서 N을 나눴을 때 y
'알고리즘' 카테고리의 다른 글
<백준> 7569번 자바 알고리즘 [BFS] (0) | 2022.01.17 |
---|---|
<백준> BFS 자바 알고리즘 (0) | 2022.01.11 |
<백준> 14889번 자바 알고리즘 (0) | 2022.01.03 |
<백준> 14888번 자바 알고리즘 (0) | 2022.01.02 |
<백준> 9663번 자바 알고리즘 (0) | 2022.01.01 |