CF1556A.A Variety of Operations

传统题 时间 2000 ms 内存 256 MiB 3 尝试 1 已通过 1 标签

A Variety of Operations

题目描述

William 一开始有两个数 aabb,它们的初始值都为 00。William 很快掌握了对这两个数进行三种不同操作的方法。在每次操作前,可以选择一个正整数 kk,然后用它进行以下三种操作之一(注意,每次操作都可以选择新的正整数 kk):

  1. kk 加到 aabb 上;
  2. kk 加到 aa 上,同时从 bb 中减去 kk
  3. kk 加到 bb 上,同时从 aa 中减去 kk

注意,操作后,aabb 可能变为负数。

William 想知道,最少需要多少次操作,才能使 aa 变为他最喜欢的数字 ccbb 变为他第二喜欢的数字 dd

输入格式

每组测试数据包含多个测试用例。第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。

接下来每个测试用例占一行,每行包含两个整数 ccdd0c,d1090 \le c, d \le 10^9),分别表示 William 最喜欢的数字和第二喜欢的数字,他希望将 aabb 变成这两个数。

输出格式

对于每个测试用例,输出一个整数,表示将 aa 变为 ccbb 变为 dd 所需的最少操作次数。如果无法通过上述操作实现,输出 1-1

说明/提示

下面演示一种非最优的将 (0,0)(0, 0) 变为 (3,5)(3, 5) 的方案:

  • 使用第一种操作,k=1k=1,当前对变为 (1,1)(1, 1)
  • 使用第三种操作,k=8k=8,当前对变为 (7,9)(-7, 9)
  • 使用第二种操作,k=7k=7,当前对变为 (0,2)(0, 2)
  • 使用第一种操作,k=3k=3,当前对变为 (3,5)(3, 5)

由 ChatGPT 4.1 翻译

样例

6
1 2
3 5
5 3
6 6
8 0
0 0
-1
2
2
1
2
0

在线编程 IDE

建议全屏模式获得最佳体验