만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

당구

시간 제한1초메모리 제한2048 MB

요약
가로 n, 세로 m인 당구대에서 45도로 출발한 공이 처음 모서리로 돌아오기까지의 이동 횟수를 구합니다. 질의는 최대 10^5개입니다.
난이도

보통10점 중 6점

유형
수학, 정수론
정답자
아직 제출이 없습니다

문제

길이가 nn, 너비가 mm인 당구대가 있다.

당구공 하나가 한 모서리에서 4545도 각도로 움직이기 시작한다. 공이 언제 출발한 모서리로 다시 돌아오는지 구하라.

형식적으로 말하면, nn과 mm이 주어졌을 때 아래 함수의 반환값을 구해야 한다.

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;
}

입력

첫 줄에 테스트 케이스의 개수 tt가 주어진다 (1≤t≤1051 \le t \le 10^5). 이후 각 테스트 케이스는 정수 nn과 mm이 한 줄에 주어진다 (2≤n,m≤1092 \le n, m \le 10^9).

출력

각 테스트 케이스마다 답을 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    5
    2 2
    2 3
    2 4
    2 5
    2 6
    
    예상 출력
    4
    12
    8
    20
    12