通天之汉诺塔
题目背景
直达通天路·小A历险记第四篇
题目描述
在你的帮助下,小 A 成功收集到了宝贵的数据,他终于来到了传说中连接通天路的通天山。但是这距离通天路仍然有一段距离,但是小 A 突然发现他没有地图!!!但是幸运的是,他在山脚下发现了一个宝箱。根据经验判断(小 A 有经验吗?),地图应该就在其中!
在宝箱上,有三根柱子以及在一根柱子上的 n n n 个圆盘。小 A 在经过很长时间判断后,觉得这就是 hanoi 塔!(这都要琢磨)。但是移动是需要时间的,所以小 A 必须要通过制造延寿药水来完成这项任务。现在,他请你告诉他需要多少步完成,以便他造足够的延寿药水。
输入格式
一个数 n n n,表示有 n n n 个圆盘。
输出格式
一个数 s s s,表示需要 s s s 步。
样例 #1
样例输入 #1
31
样例输出 #1
2147483647
样例 #2
样例输入 #2
15
样例输出 #2
32767
提示
数据范围及约定
对于所有数据, n ≤ 15000 n \le 15000 n≤15000。
C++实现
#include<bits/stdc++.h>
using namespace std;
int n,l,i,a[10000];
void mul(){
for(int i=1;i<=l;i++)a[i]*=2;
for(int i=1;i<=l;i++)
if(a[i]>9){
a[i+1]++;
a[i]-=10;
}
if(a[l+1]>0)l++;
return;
}
int main(){
cin>>n;
a[1]=1;
l=1;
for(i=0;i<n;i++)mul();
for(i=l;i>1;i–)cout<<a[i];
cout<<a[1]-1;
return 0;
}
后续
接下来我会不断用C++来实现信奥比赛中的算法题、GESP C++考级编程题实现、白名单赛事考题实现,感兴趣的请关注,我后续将继续分享相关内容
标签:信奥,通天,int,样例,C++,汉诺塔,15000,打卡 From: https://blog.csdn.net/rogeliu/article/details/143689122