题目来源:码蹄集
https://matiji.net/exam/brushquestion/46/3181/1DC60EA6DF83A333301CFFE1407FBA59
时间限制:1000ms
内存限制:65535kb
题目描述:
计算3柱河内塔问题。但是原来的一个盘子变成了两个大小相同的叠在一起的盘子,如图所示:
将A柱上的盘子放到C柱上,一次只能移动一个盘子,且大盘子不能在小盘子上,
两个相同大的盘子没有次序关系。
求从A柱移动到C柱需要的最小步数。
输入格式:输入一个正整数n,表示在A柱上放有2n个圆盘。
输出格式:输出一个正整数, 为完成上述任务所需的最少移动次数。
输入样例:1
输出样例:2
参考程序:
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
using namespace std;
#define ll long long
#define N 10000
ll a[N] ;
int main(){
ll n;
cin >> n;
a[1] = 1 ;
for (ll i = 2; i <= n; i++){
a[i] = a[i - 1] * 2 + 1 ;
}
cout << a[n] * 2 ;
return 0;
}