AT_arc222_f [ARC222F] Triple Transformation

题目描述

考虑对三个非负整数组成的三元组 $(x, y, z)$ 进行一种**操作**。每次操作按照以下规则替换 $(x, y, z)$: - 如果 $y+z < x$:替换为 $(x-y-z,\, 2y,\, 2z)$。 - 如果 $x+z < y$:替换为 $(2x,\, y-x-z,\, 2z)$。 - 如果 $x+y < z$:替换为 $(2x,\, 2y,\, z-x-y)$。 - 如果以上情况都不满足:替换为 $(y+z-x,\, x+z-y,\, x+y-z)$。 注意,每组非负整数的三元组都正好属于上述四种情况中的一种。 现在给定非负整数 $A_1, A_2, A_3, B_1, B_2, B_3$。你需要对三元组 $(A_1, A_2, A_3)$ 进行若干次(可以为零次)上述操作,使其变为 $(B_1, B_2, B_3)$。求最少需要多少次操作。如果无论如何也无法变为 $(B_1, B_2, B_3)$,输出 $-1$。 共给出 $T$ 组测试数据,你需要分别解决。

输入格式

输入通过标准输入给出,格式如下: > $T$ > $\mathrm{case}_1$ > $\mathrm{case}_2$ > $\vdots$ > $\mathrm{case}_T$ 每个测试用例占一行,格式如下: > $A_1\ A_2\ A_3\ B_1\ B_2\ B_3$

输出格式

每组测试数据输出一行。 对于每组数据,输出一个数,表示将三元组 $(A_1, A_2, A_3)$ 经过若干次操作后变为 $(B_1, B_2, B_3)$ 所需的最小操作次数。如果无法变为 $(B_1, B_2, B_3)$,输出 $-1$。

说明/提示

### 样例解释 1 对于 $(A_1,A_2,A_3)=(2,3,4)$,反复应用操作后,三元组变化如下: - $(2,3,4) \to (5,3,1) \to (1,6,2) \to (2,3,4) \to (5,3,1) \to (1,6,2)\to\cdots$ 由此可以看出,前三组测试数据的答案分别为 $0, 1, 2$。 ### 数据范围 - $1\leq T\leq 300$ - $0\leq A_1, A_2, A_3, B_1, B_2, B_3\leq 10^8$ - 所有输入均为整数。 由 ChatGPT 5 翻译