您的位置:首页 > 其它

洛谷 P1760 通天之汉诺塔

2016-11-10 00:03 197 查看

题目背景

直达通天路·小A历险记第四篇

题目描述

在你的帮助下,小A成功收集到了宝贵的数据,他终于来到了传说中连接通天路的通天山。但是这距离通天路仍然有一段距离,但是小A突然发现他没有地图!!!但是幸运的是,他在山脚下发现了一个宝箱。根据经验判断(小A有经验吗?),地图应该就在其中!在宝箱上,有三根柱子以及在一根柱子上的n个圆盘。小A在经过很长时间判断后,觉得这就是hanoi塔!(这都要琢磨)。但是移动是需要时间的,所以小A必须要通过制造延寿药水来完成这项任务。现在,他请你告诉他需要多少步完成,以便他造足够的验收药水。时限1s。

输入输出格式

输入格式:

一个数n,表示有n个圆盘

输出格式:

一个数s,表示需要s步。

输入输出样例

输入样例#1:
input1:31
inout2:15


输出样例#1:
output1:2147483647
output2:32767


说明

对于所有数据n<=15000

很容易的练手题哦!

公式:2^n-1。
加上高精度就好了。

#include<iostream>
#include<cstdio>
using namespace std;
int n,ans[10005];
int main()
{
scanf("%d",&n);
ans[0]=ans[1]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=ans[0];j++)
ans[j]*=2;
for(int j=1;j<=ans[0];j++)
ans[j+1]+=ans[j]/10,ans[j]%=10;
if(ans[ans[0]+1]!=0)
ans[0]++;
while(ans[ans[0]]/10!=0)
ans[ans[0]+1]+=ans[ans[0]]/10,ans[ans[0]]%=10,ans[0]++;
}
ans[1]--;
for(int i=ans[0];i>=1;i--)
printf("%d",ans[i]);
printf("\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  动态规划 高精度