당구
시간 제한1초메모리 제한2048 MB
가로 n, 세로 m인 당구대에서 45도로 출발한 공이 처음 모서리로 돌아오기까지의 이동 횟수를 구합니다. 질의는 최대 10^5개입니다.
문제
길이가 , 너비가 인 당구대가 있다.
당구공 하나가 한 모서리에서 도 각도로 움직이기 시작한다. 공이 언제 출발한 모서리로 다시 돌아오는지 구하라.
형식적으로 말하면, 과 이 주어졌을 때 아래 함수의 반환값을 구해야 한다.
int64_t check(int n, int m) {
int x = 0, y = 0;
int dx = 1, dy = 1;
int64_t t = 0;
while (1) {
if (x + dx < 0) dx *= -1;
if (x + dx > n) dx *= -1;
if (y + dy < 0) dy *= -1;
if (y + dy > m) dy *= -1;
x += dx;
y += dy;
++t;
if (x == 0 && y == 0) break;
}
return t;
}
입력
첫 줄에 테스트 케이스의 개수 가 주어진다 (). 이후 각 테스트 케이스는 정수 과 이 한 줄에 주어진다 ().
출력
각 테스트 케이스마다 답을 한 줄에 출력한다.