Problem:


D : 市松模様 / Checkered Pattern

問題文

縦横の長さが h, w の長方形があり， 内部には一辺の長さが 1 の正方形のマスが敷き詰められている． 最も左上のマスを (0,0) とし， (0,0) の i 個下で j 個右のマスを (i,j) のように表すことにすると， (i,j) は i+j が偶数なら赤色に，奇数なら青色に塗られている．

今，(0,0) の左上の頂点と (h &minus; 1,w &minus; 1) の右下の頂点を線分で結んだ． この線分が通る赤色の部分の長さを a, 青色の部分の長さを b とおいたとき， 比 a : b は整数比となる．a : b を最も簡単にして(互いに素な整数で)表せ．

入力

T
h_1 \ w_1
…
h_T \ w_T

1 つのファイルに T 個の入力が含まれる． 1 行目に T， 1+i 行目に T 番目の入力における縦横の長さ h_i, w_i が入力される．

制約

整数である

1 ≤ T ≤ 1000

1 ≤ h_i, w_i ≤ 109

出力

各ケースに対する答えを 1 でスペース区切りで出力せよ． 全体で T 行にわたる．

サンプル

サンプル入力1

3
2 3
3 3
4 3

サンプル出力1

1 1
1 0
1 1

  

Sample input:
3
2 3
3 3
4 3


Sample output:
1 1
1 0
1 1

Submission status: Accepted

Solution code:
def gcd(a,b):
    if a == 0:
        return b
    else:
        return gcd(b%a,a)
t = int(input())
while t:
    t -= 1
    a,b = map(int, input().split())
    c = gcd(a,b)
    a = a//c
    b = b//c
    if a == b:
        ans1 = 1
        ans2 = 0
    elif a % 2 == 0 or b % 2 == 0:
        ans1 = 1
        ans2 = 1
    else:
        ans1 = a*b//2+1
        ans2 = a*b//2
    print(ans1,ans2)