luogu1096 Hanoi双塔问题【2007提高】(递推+高精)
来源:互联网 发布:新版淘宝直播在哪里看 编辑:程序博客网 时间:2024/04/28 02:11
首先手推f[1]=2,f[2]=6.我们发现把i*2个圆盘从一移到三上,其实就等价于把上面的(i-1)*2个圆盘从一移到二上,然后用两步把第一个柱子剩下的两个最大的移到第三个柱子上,再把(i-1)*2个圆盘从二移到三上。即f[i]=f[i-1]*2+2.然后试一下极限数据,发现会超long long,因此我们要用高精写。
#include <cstdio>#include <cstring>#define ll long longint const N=1000;int n;struct bigint{ int a[N],len; bigint(){ memset(a,0,sizeof(a));len=0; } bigint operator*(int k){ bigint re; for(int i=0;i<len;++i){ re.a[i]+=(a[i]<<1); re.a[i+1]+=re.a[i]/10; re.a[i]%=10; } re.len=len; while(re.a[re.len]) re.len++; return re; }}ans;int main(){ scanf("%d",&n); ans.a[0]=2;ans.len=1; for(int i=2;i<=n;++i){ ans=ans*2; ans.a[0]+=2; } for(int i=0;i<ans.len;++i){ ans.a[i+1]+=ans.a[i]/10; ans.a[i]%=10; while(ans.a[ans.len]) ans.len++; } for(int i=ans.len-1;i>=0;--i) printf("%d",ans.a[i]); return 0;}
阅读全文
0 0
- luogu1096 Hanoi双塔问题【2007提高】(递推+高精)
- 【递推】Hanoi双塔问题
- Hanoi双塔问题 bjfu1120 递推
- Hanoi双塔问题(hanoi)
- Hanoi双塔问题
- Hanoi双塔问题
- Hanoi双塔问题
- hanoi双塔问题(高精乘)
- 1485. Hanoi双塔问题
- 1485. Hanoi双塔问题
- P1354 Hanoi双塔问题
- 汉诺(Hanoi)塔问题
- Hanoi(汉诺)塔问题
- 汉诺塔问题(Hanoi塔)
- Hanoi(汉诺)塔问题
- neu 1518 New Hanoi Tower(矩阵,递推)
- noip普及组2007 Hanoi双塔问题
- Sicily 1485 Hanoi双塔问题 (SOJ 1485) 【高精度】
- SSAS
- bash(3) 条件语句 if/else
- C语言中合并字符串
- 关于输入一串数字转变成Mac地址(方法之一)
- 我的实现_滚动列表
- luogu1096 Hanoi双塔问题【2007提高】(递推+高精)
- Exchange2013通讯组授权其他用户管理其中成员方法
- awk
- 问题 : 挖掘机技术哪家强
- mysql踩坑记录
- STL MAP使用注意事项
- hdu 2897 邂逅明下
- 好用的vim 配置
- 【AC自动机-fail树+树链合并】BZOJ3881(Coci2015)[Divljak]题解