#1999. 汉诺塔问题

汉诺塔问题

时间:1s

空间:256M

题目描述

汉诺塔问题是源自古老传说的益智游戏,从左到右有 A, B, C 三根柱子,A 柱上有 nn 个穿孔圆盘,圆盘的尺寸由下到上,依次变小。这个游戏的目标是将所有的圆盘移到 C 柱.

提示,可以将圆盘临时置于 B 柱,也可以将圆盘重新放回 A 柱,但必须遵守以下两条规则:

  1. 每次只能移动某一根柱子最上面的圆盘。
  2. 大圆盘不不能叠在小圆盘上。

小 Z 想记录按照最优策略游戏时,每移动一步后 A, B, C 共 33 根柱子的圆盘数量。

例如,当有三个圆盘时,其移动过程如下:

  1. 从 A 柱移到 C 柱,三根柱子上的圆盘数量分别是 2 0 12~0~1
  2. 从 A 柱移到 B 柱,二根柱子上的圆盘数量分别是 1 1 11~1~1
  3. 从 C 柱移到 B 柱,三根柱子上的圆盘数量分别是 1 2 01~2~0
  4. 从 A 柱移到 C 柱,三根柱子上的圆盘数量分别是 0 2 10~2~1
  5. 从 B 柱移到 A 柱,三根柱子上的圆盘数量分别是 1 1 11~1~1
  6. 从 B 柱移到 C 柱,二根柱子上的圆盘数量分别是 1 0 21~0~2
  7. 从 A 柱移到 C 柱,三根杜子上的圆盘数量分别是 0 0 30~0~3
  • 可以看到,最少 77 步就完成了所有圆盘的移动。

要将 nn 块圆盘从 A 柱,移到 C 柱,按照最优策,请计算第 kk 次移到后,三根柱子上面的圆盘数量分别是多少?

输入格式

一行两个个整数 nnkk。分别表示圆盘数量和移到次数。

输出格式

一行包含 33 个整数,分别表示 A, B, C 三根柱子上圆盘的数量

样例

3 5
1 1 1
3 1
2 0 1
3 7
0 0 3

说明/提示

对于 100%100\% 的数据,3n201k2n13≤n≤20,1≤k≤2^n-1