汉诺塔V
2016-05-16 21:43
218 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1995
只考虑移动k层的次数,k(N)为N层中移动第k层的次数,把1~k层视为一个整体,k(N)=(N-k+1)层中移动第1层的次数。
计算n层中移动第1层的次数f(n),这里和汉诺塔的考虑方式一样。
f(n)=2*f(n)=2^(n-1)*f(1)=2^(n-1);
所以k(N)=2^(N-k)
只考虑移动k层的次数,k(N)为N层中移动第k层的次数,把1~k层视为一个整体,k(N)=(N-k+1)层中移动第1层的次数。
计算n层中移动第1层的次数f(n),这里和汉诺塔的考虑方式一样。
f(n)=2*f(n)=2^(n-1)*f(1)=2^(n-1);
所以k(N)=2^(N-k)
#include<stdio.h> #include<conio.h> //#include<time.h> long long jie(int m,int n) {//计算m^n long long ans; if(n==0) return 1; else { ans=jie(m,n/2); if(n%2) return ans*ans*2; else return ans*ans; } } int main() { int N,k,T; scanf("%d",&T); while(T--) { scanf("%d%d",&N,&k); printf("%I64d\n",jie(2,N-k)); } // printf("time used: %u\n",clock()/CLOCKS_PER_SEC); // getch(); return 0; }
相关文章推荐
- 1006. 换个格式输出整数 (15)
- spring 引入命名空间简介
- Windows下Eclipse+PyDev安装Python开发环境
- u-boot配置和编译过程详解
- 【BZOJ4544】椭圆上的整点 数学
- spring 数据连接泄漏
- 2016百度之星资格赛题解
- (整理)SQLServer 大数据的插入与查询
- linux中的svn命令使用
- Spark-再接着上次的Lamda架构
- poj之旅——2385
- mjpg-streamer移植
- php单例模式
- jquery
- Spark Streaming揭秘 Day10 从BlockGenerator看接收数据的生命周期
- python中模拟进行ssh命令的执行
- LeetCode Single Number II
- spring数据连接泄漏
- python中模拟进行ssh命令的执行
- ssh加密访问