P13087

GCD

难度 3 级 小学 数学入门 欧几里得算法 最大公因数
讨论 统计 1通过 2提交 50%通过率 旧版界面
时间限制 1 秒 内存限制 128 MB

题目描述

给定两个整数 a 和 b,每一轮你可以执行以下两种操作之一:

  • 如果 a > 0,则将 a 的值减少 \gcd(a, b)。
  • 如果 b > 0,则将 b 的值减少 \gcd(a, b)。

Grace 想知道使得 a 和 b 都变为 0 所需的最少轮数。

注意: \gcd(x, y) 表示 x 和 y 的最大公约数。例如,\gcd(6, 8) = 2,\gcd(7, 5) = 1。\gcd(x, 0) 和 \gcd(0, x) 的值定义为 x

输入

每个测试文件包含多个测试用例。第一行包含测试用例的数量 T(1 \le T \le 1000)。

接下来是测试用例的描述。

每个测试用例占一行,包含两个整数 a 和 b(1 \le a \le b,a \le 5000,b \le 10^{18})。

对于每个测试文件,保证所有测试用例的 a 之和不超过 10^4。

输出

对于每个测试用例,输出一个整数,表示使 a 和 b 都变为 0 所需的最少轮数。

样例

样例 1
输入
3
2 3
1 5
4 6
输出
2
3
4

提示

第一个测试用例: a = 2, b = 3

一种最优方案如下:

  1. 对 b 操作:b = 3 - \gcd(2, 3) = 3 - 1 = 2,状态变为 (2, 2)
  2. 对 a 操作:a = 2 - \gcd(2, 2) = 2 - 2 = 0,状态变为 (0, 2)
  3. 对 b 操作:b = 2 - \gcd(0, 2) = 2 - 2 = 0,状态变为 (0, 0)
Tab 缩进 · 提交后可在下方查看评测状态
请先登录后再提交