HDU-1996-汉诺塔VI
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=1996
其实它就是求移动的所有可能,也就是n个盘子摆在三个塔上的任何可能的种数。可以这么思考这个问题:n个盘子分开摆在三个塔上,
所有可能的种数(这个和高中时候的一个信封投递到邮箱的问题很类似,那个是4封信投到3个邮箱,求投的种数的);n个盘子,每个
盘子有3种摆法,所以n个盘子摆在3个塔上的摆法就有3的n次幂种。知道这个规律之后,我们的问题就迎刃而解了。
代码
#include<stdio.h>
#include<math.h>
int main(void)
{
int n,t;
while(scanf("%d",&t)==1)
{
while(t--)
{
scanf("%d",&n);
printf("%I64d\n",(__int64)(pow(3,n)+0.5));//精度处理因为3可能为2.999999999999,如果在强制转换就变成2了。
}
}
return 0;
}
代码
#include<stdio.h>
#include<math.h>
int main(void)
{
int t,n;
while(scanf("%d",&t)==1)
{
while(t--)
{
scanf("%d",&n);
printf("%.0lf\n",pow(3,n));
}
}
return 0;
}
代码
#include<stdio.h>
#include<math.h>
int main(void)
{
int i;
for(i=1;i<=29;i++)
printf("%I64d %.0lf\n",(__int64)(pow(3,i)),pow(3,i));
return 0;
}
输出
3 3
9 9
27 27
81 81
243 243
729 729
2187 2187
6561 6561
19683 19683
59049 59049
177147 177147
531441 531441
1594323 1594323
4782969 4782969
14348907 14348907
43046721 43046721
129140163 129140163
387420489 387420489
1162261467 1162261467
3486784401 3486784401
10460353202 10460353203
31381059609 31381059609
94143178826 94143178827
282429536481 282429536481
847288609442 847288609443
2541865828329 2541865828329
7625597484986 7625597484987
22876792454961 22876792454961
68630377364882 68630377364883
这就是区别。
HDU-1996-汉诺塔VI的更多相关文章
- HDU 1996汉诺塔VI
题目: n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列.由于 发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上,即各柱 子从下往上的大小仍保持 ...
- HDU 1996 汉诺塔VI (排列组合)
题意:... 析:每次都是有三种放法,1,2,3,根柱子,所以就是3^n次方. 代码如下: #pragma comment(linker, "/STACK:1024000000,102400 ...
- HDUOJ---1996汉诺塔VI
汉诺塔VI Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- 汉诺塔系列问题: 汉诺塔II、汉诺塔III、汉诺塔IV、汉诺塔V、汉诺塔VI
汉诺塔 汉诺塔II hdu1207: 先说汉若塔I(经典汉若塔问题),有三塔.A塔从小到大从上至下放有N个盘子.如今要搬到目标C上. 规则小的必需放在大的上面,每次搬一个.求最小步数. 这个问题简单, ...
- HDU 1207 汉诺塔II (找规律,递推)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1207 汉诺塔II Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 2077 汉诺塔IV (递推)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2077 还记得汉诺塔III吗?他的规则是这样的:不允许直接从最左(右)边移到最右(左)边(每次移动一定是 ...
- HDU 2064 汉诺塔III (递推)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2064 约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下.由小到 ...
- hdu 1207 汉诺塔II (DP+递推)
汉诺塔II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- HDU 2064 汉诺塔III
汉诺塔III Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU 2064 汉诺塔III(递归)
题目链接 Problem Description 约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下.由小到大顺序串着由64个圆盘构成的塔.目的是将最左边杆上的盘 ...
随机推荐
- 原创:LoadTest系列之参数时,设置提取参数的方式
在对脚本进行参数化后,可以通过设置Data source最底层节点的属性Access Method来控制提取数据的方式. 1. 选中Data source的tables下的节点 2. 打开该节点的Pr ...
- Quartz总结(三):动态修改定时器一
package com.mc.bsframe.job; import org.quartz.Scheduler; import org.quartz.SchedulerException; impor ...
- 在Servlet(或者Filter,或者Listener)中使用spring的IOC容器
web.xml中的加载顺序为:listener > filter > servlet > spring. 其中filter的执行顺序是filter-mapping在web.xml中出 ...
- 一个人的旅行HDU 2066 floyd
一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- shell命令前后端切换和暂停
Shell支持作用控制,有以下命令: 1. command& 让进程在后台运行 2. jobs 查看后台运行的进程编号 3 ctrl+z 然程序进入后台并且暂停 3. fg %n 让后台运行的 ...
- 打开地图文件和shape文件代码加载Mxd文档
代码加载Mxd文档 用代码添加Mxd文档,用到AxMapControl.LoadMxFile(sFilePath),我们只要将Mxd文档的路径传给这个方法即可 /// <summary> ...
- vector 的用法(c++)
vertor是向量类型,它是一个对象实体.它作为容器可以容纳不同的实体,如int,flout,double,还有类类型. 1.包含头文件 #include <vector> 2.声明:ve ...
- openstack controller ha测试环境搭建记录(十二)——配置neutron(计算节点)
在计算节点配置内核参数:vi /etc/sysctl.confnet.ipv4.conf.all.rp_filter=0net.ipv4.conf.default.rp_filter=0 在计算节点使 ...
- 控制流之while
while语句只要在一个条件为真的情况下,while语句允许你重复执行一块语句.while语句是所谓 循环 语句的一个例子.while语句有一个可选的else从句.使用while语句~~~~~~~~~ ...
- PHP 多线程、多进程
多线程:PHP其实并不支持多线程,只是通过一些扩展或者socket方式伪装成多线程,实质不是的.在PHP 5.3 以上版本,使用 pthreads PHP扩展,可以使PHP真正地支持多线程:或者使用 ...