这道题很简单,将汉诺塔的递归调用树画出来就很清楚了。假设n=8,三根柱子编号abc,首先将7个disk由a移到b,然后将disk8由a移到c,然后再将7个disk由b移到c,即完成。也即n=8的问题可以转化为两个n=7的问题。对于任意n,最大的n一定只搬运1次,那么disk7将搬运2ci,依次类推。
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int T;
int N, k;
long long count;
cin >> T;
while (T--)
{
cin >> N >> k;
count = pow(2, N - k );
cout << count << endl;
}
return 0;
}