/ OPS / 题库 /

汉诺塔

汉诺塔

#描述#
<p>&nbsp&nbsp&nbsp&nbsp你们一定听说过汉诺塔问题吧。这个问题是说有3个柱子和N个不同大小的圆盘,初始时所有的盘子都在第一个柱子上,最大的圆盘在最下面,最小的圆盘在最上面,从大到小放置。每一次你可以从任意柱子上把最上面的盘子拿走放到任意其他盘子上,但是拿走的盘子只能放到半径比它大的盘子的上面。问题就是如何用最少的次数把所有盘子从第一个柱子移到第三个柱子。</p>
<p>&nbsp&nbsp&nbsp&nbsp事实上,汉诺塔问题并不仅仅只有3个柱子,而是有M个柱子,请你们计算当有M个柱子时把N个盘子从第一个柱子移到最后一个柱子最少要几次操作。</p>

#格式#
##输入格式##
输入有多组数据,第一行是一个整数N,表示有N组数据。接下来N行每一行有两个整数,分别表示盘子数和柱子数,盘子数&lt=30,3&lt=柱子数&lt=63.

##输出格式##
输出N行,第i行表示第i组数据需要的最少操作数。

#样例1#
##样例输入1##

2
2 3
16 14

##样例输出1##

3
37

#限制#
1000ms
32768KB

#提示#

#来源#
kokopelli

信息

ID
1841
难度
5
分类
category1 点击显示
标签
递交数
0
已通过
0
通过率
?
上传者