P14743 [ICPC 2021 Seoul R] Squid Game
题目描述
:::align{center}

:::
你是参加一系列带有致命惩罚的儿童游戏的 $456$ 名玩家之一。穿过若干迷宫般的走廊和楼梯后,你打开了下一个游戏的大门。场上有三个容量无限的桶,每个桶中都装有整数升的水。桶的编号从 $1$ 到 $3$。桶 $1$、$2$ 和 $3$ 中初始的水量分别给定为 $X$、$Y$ 和 $Z$。
在任何时候,你可以通过从一个桶向另一个桶倒水,使后一个桶中的水量翻倍。具体来说,你可以从一个装有 $y$ 升水的桶,向一个装有 $x$ 升水的桶(其中 $x \leq y$)倒水,直到后者装有 $2x$ 升水,而前者剩余 $y - x$ 升水。注意 $x$ 和 $y$ 始终是整数,且 $x \leq y$。参见图 J.1。
:::align{center}

图 J.1 一次倒水过程
:::
为了生存,你必须在有限次倒水内清空其中一个桶。幸运的是,这总是可能的。给定三个桶中水的初始量 $X$、$Y$ 和 $Z$,请编写一个程序,输出一系列倒水操作,直到其中一个桶首次变空为止。
输入格式
你的程序需要从标准输入读取数据。输入的第一行包含三个整数 $X$、$Y$ 和 $Z$ ($1 \leq X \leq Y \leq Z \leq 10^9$),分别表示桶 $1$、$2$ 和 $3$ 中水的初始量。
输出格式
你的程序需要向标准输出写入结果。第一行应输出直到其中一个桶首次变空为止的倒水次数 $m$。$m$ 应不超过 $1,000$。接下来的 $m$ 行,每行包含两个整数 $A$ 和 $B$ ($1 \leq A \neq B \leq 3$),表示你在一次倒水过程中从桶 $A$ 向桶 $B$ 倒水。你必须保证在第 $m$ 次倒水后,其中一个桶首次变空。如果有多种方法可以清空其中一个桶,则输出其中任意一种即可。
说明/提示
翻译由 DeepSeek V3 完成