#P2717. Hour Glass
Hour Glass
本题没有可用的提交语言。
描述
你被给予两个沙漏。它们分别可以测量M分钟和N分钟。你希望使用这两个沙漏来测量目标时间T分钟。每个沙漏由两个玻璃碗通过狭窄通道("狭窄部")连接,沙子可通过通道从一个碗流向另一个碗。若所有沙子均位于下层碗中且沙漏被倒置("翻转"),沙子将在M或N分钟内流入另一个碗(此时成为下层碗)。初始时(时间=0),两个沙漏的所有沙子均位于下层碗中,且两个沙漏均被翻转。此后,可按照以下规则翻转一个或两个沙漏:
-
当仅有一个沙漏在特定时刻耗尽时,有以下四种行动选择:
- 翻转已耗尽的沙漏;
- 翻转未耗尽的沙漏;
- 同时翻转两个沙漏;
- 不翻转任何沙漏,仅让一个沙漏保持闲置直至另一个沙漏耗尽。
-
当两个沙漏同时耗尽,或一个沙漏处于闲置状态而另一个刚耗尽时,必须翻转至少其中一个沙漏。
-
任何沙漏仅可在以下时刻被翻转:当前沙漏、另一个沙漏或两者同时刚耗尽。
若存在一系列沙漏翻转操作使得在序列执行过程中,一个(或两个)沙漏恰好在时间T耗尽,则称时间T可被测量。假设翻转沙漏是瞬时的且不消耗时间。
输入
输入包含多行,每行表示问题的一个实例。每行包含三个正整数M、N和T。假设2 ≤ M输出
对于每个问题实例,输出测量目标时间T的最短翻转序列。每次翻转需在一行中输出时间(格式为`时间: 翻转的沙漏容量`,若同时翻转两个沙漏则用逗号分隔)。翻转序列需按时间顺序排列。若存在多个最短序列,输出任意一个即可。若无法测量目标时间T,输出"Impossible"。每个实例的输出后需跟随一行由十个连字符(`----------`)组成的分隔线。4 17 21
4 17 22
8 13 23
0 0 0
0: 4,17
17: 4,17
----------
0: 4,17
4: 4
8: 4
12: 4
16: 4
17: 4
18: 4,17
----------
0: 8,13
8: 8
13: 8,13
18: 8,13
----------
来源
Rocky Mountain 2005