CF1556A A Variety of Operations
题目描述
William 一开始有两个数 $a$ 和 $b$,它们的初始值都为 $0$。William 很快掌握了对这两个数进行三种不同操作的方法。在每次操作前,可以选择一个正整数 $k$,然后用它进行以下三种操作之一(注意,每次操作都可以选择新的正整数 $k$):
1. 将 $k$ 加到 $a$ 和 $b$ 上;
2. 将 $k$ 加到 $a$ 上,同时从 $b$ 中减去 $k$;
3. 将 $k$ 加到 $b$ 上,同时从 $a$ 中减去 $k$。
注意,操作后,$a$ 和 $b$ 可能变为负数。
William 想知道,最少需要多少次操作,才能使 $a$ 变为他最喜欢的数字 $c$,$b$ 变为他第二喜欢的数字 $d$。
输入格式
每组测试数据包含多个测试用例。第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
接下来每个测试用例占一行,每行包含两个整数 $c$ 和 $d$($0 \le c, d \le 10^9$),分别表示 William 最喜欢的数字和第二喜欢的数字,他希望将 $a$ 和 $b$ 变成这两个数。
输出格式
对于每个测试用例,输出一个整数,表示将 $a$ 变为 $c$,$b$ 变为 $d$ 所需的最少操作次数。如果无法通过上述操作实现,输出 $-1$。
说明/提示
下面演示一种非最优的将 $(0, 0)$ 变为 $(3, 5)$ 的方案:
- 使用第一种操作,$k=1$,当前对变为 $(1, 1)$。
- 使用第三种操作,$k=8$,当前对变为 $(-7, 9)$。
- 使用第二种操作,$k=7$,当前对变为 $(0, 2)$。
- 使用第一种操作,$k=3$,当前对变为 $(3, 5)$。
由 ChatGPT 4.1 翻译