BOJ_S1_6064
๐ [S1_6064] ์นด์ ๋ฌ๋ ฅ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
// **** input start ****
int tc = Integer.parseInt(br.readLine());
for (int TC = 0; TC < tc; TC++) {
st = new StringTokenizer(br.readLine(), " ");
int M = Integer.parseInt(st.nextToken());
int N = Integer.parseInt(st.nextToken());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
// ๊ฒฐ๊ณผ๊ฐ
int res = -1;
// ์ต์ ๊ณต๋ฐฐ์๋ฅผ ๊ตฌํด์ค๋ค
int num_lcm = 0;
// ํฌ๊ธฐ์ ๋ฐ๋ผ
if (M >= N) {
num_lcm = lcm(M, N);
} else {
num_lcm = lcm(N, M);
}
// ๋๋จธ์ง๊ฐ 0์ด ๋๋ ๊ฒฝ์ฐ ๋๋ฌธ์ 1์ ๋นผ์ค๋ค. ๋์ค์ ๊ฒฐ๊ณผ์์ 1์ ๋ํด์ค๋ค.
x--;
y--;
// x๋ถํฐ ์์ํด์ M์ ๋ํด๊ฐ๋ฉฐ check
for(int i=x; i<num_lcm; i += M) {
// ๊ฐ์ ์ฐพ์ผ๋ฉด
if(i%N==y) {
// ๊ฐ ๋ฃ๊ธฐ
res = i+1;
// ์ค์ง
break;
}
}
sb.append(res).append("\n");
}
System.out.println(sb);
}
// ์ต๋๊ณต์ฝ์ ๊ตฌํ๊ธฐ
static int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
// ์ต์๊ณต๋ฐฐ์ ๊ตฌํ๊ธฐ
static int lcm(int a, int b) {
return a * b / gcd(a, b);
}
}
๐ค ๋์ ์๊ฐ
๋จผ์ ์ ์๋ TC๋ฅผ ํตํด ๋ฌธ์ ๋ฅผ ๋์ดํด๋ณด์๋ค.
๋์ดํด๋ณด๋ ๊ท์น์ ์ฐพ์ ์ ์์๋ค.
๊ธฐ์ค์ x๋ก ์ก๊ณ M๋งํผ ๋๋ฆฌ๋ฉด์ ์ฒดํฌํด์ค๋ค. ๊ฑฐ๊ธฐ์ n์ผ๋ก ๋๋ ์ y ๊ฐ์ด ๋์ค๋ฉด ๊ทธ ๊ฐ์ด ์ฐพ๋ ๊ฐ์ด๋ค.