7433. 弹球循环 (Bouncing Ball Cycle)
时间限制:1000 MS 内存限制:512 MB
题目描述
# 弹球循环 (Bouncing Ball Cycle) 时间限制:$1.00\text{ s}$ 空间限制:$512\text{ MB}$ ## 题目描述 在大小为 $n \times m$ 的网格的左上角有一个弹球。网格的行从上到下依次编号为 $1, 2, \dots, n$,列从左到右依次编号为 $1, 2, \dots, m$。 弹球最初沿着对角线方向向远离左上角的方向移动。在每一步中,它移动到一个相邻的单元格。每当弹球碰到网格的边界时,它就会改变移动方向。 请问弹球需要经过多少步才能再次回到它的初始位置?在整个移动过程中,它总共访问了多少个不同的单元格? ## 输入格式 第一行包含一个整数 $t$:测试用例的数量。 接下来有 $t$ 行,每行包含两个整数 $n$ 和 $m$:网格的大小。 ## 输出格式 对于每个测试用例,输出两个整数:弹球回到初始位置所需的步数,以及访问过的不同单元格的数量。 ## 输入输出样例 ### 输入 #1 ```text 4 3 4 2 2 19 18 42 1337 ``` ### 输出 #1 ```text 12 6 2 2 612 171 109552 28077 ``` ## 说明/提示 ### 数据规模与约定 - $1 \le t \le 1000$ - $2 \le n, m \le 10^9$