【HDU 2064】汉诺塔III
来源:互联网 发布:软件系统测试报告 编辑:程序博客网 时间:2024/06/07 04:27
汉诺塔III
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 16089 Accepted Submission(s): 7494
Problem Description
约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下、由小到大顺序串着由64个圆盘构成的塔。目的是将最左边杆上的盘全部移到右边的杆上,条件是一次只能移动一个盘,且不允许大盘放在小盘的上面。
现在我们改变游戏的玩法,不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大盘放到下盘的上面。
Daisy已经做过原来的汉诺塔问题和汉诺塔II,但碰到这个问题时,她想了很久都不能解决,现在请你帮助她。现在有N个圆盘,她至少多少次移动才能把这些圆盘从最左边移到最右边?
现在我们改变游戏的玩法,不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大盘放到下盘的上面。
Daisy已经做过原来的汉诺塔问题和汉诺塔II,但碰到这个问题时,她想了很久都不能解决,现在请你帮助她。现在有N个圆盘,她至少多少次移动才能把这些圆盘从最左边移到最右边?
Input
包含多组数据,每次输入一个N值(1<=N=35)。
Output
对于每组数据,输出移动最小的次数。
Sample Input
1312
Sample Output
226531440
对于任意n的公式:
sum=3^n-1
至于怎么推出来的……
n=1,sum=2
n=2,sum=8
n=3,sum=26
现在想想我觉得看这三组数据,是有可能推出公式的。
至少我没推出来,搜题解搜出来的讲解也没看懂。
所以欲知原理请看大佬们的答案。
#include<stdio.h>int main(){ long long n; while(~scanf("%lld",&n)) { long long sum=1; for(int i=1;i<=n;i++) { sum*=3; } printf("%lld\n",sum-1); }}
0 0
- hdu 2064 汉诺塔III
- HDU 2064 汉诺塔III
- HDU 2064 汉诺塔III
- HDU 2064 汉诺塔III
- HDU 2064 汉诺塔III
- hdu 2064 汉诺塔III
- HDU 2064 汉诺塔III
- hdu---2064汉诺塔III
- HDU 2064 汉诺塔III
- hdu 2064 汉诺塔III
- HDU 2064 汉诺塔III
- HDU 2064 汉诺塔III
- HDU 2064:汉诺塔III
- HDU 2064 汉诺塔III
- HDU-2064 汉诺塔III
- hdu 2064 汉诺塔III
- hdu 2064 汉诺塔III
- hdu 2064 汉诺塔III
- jsp 中登录验证 注销 的模版
- Ajax验证用户名是否存在模板
- JAVAWEB开发之JSP、EL、及会话技术(Cookie和Session)的使用详解
- 我自己写的归并排序。。
- SpringMVC 常用注解(1)
- 【HDU 2064】汉诺塔III
- MyBabis 用法详解
- 这10个Linux网络和监控命令都不会,你还学什么运维?
- 动态SQL 学习
- java开发中JDBC连接数据库的代码实现与详解(转载)
- 3.闭包
- Cookie 用法 小记
- Android 图片圆角的简单方法
- ListView 的优化