poj2506(递推+高精度)
来源:互联网 发布:软件账号密码扫描 编辑:程序博客网 时间:2024/05/02 00:02
题目链接:http://poj.org/problem?id=2506
题目大意:给出一个n,代表一个2*n的矩形地板,要求只用2*1和2*2两种瓷砖将其完全覆盖,求所有情况的数量
解题思路;求出递推公式:f(n)=2*f(n-2)+f(n-1),这道题还有另外一个关键点是高精度,因为题目提到n可能会达到250,因此答案的数字将会非常大,long long型照样会爆掉,因此采用数组模拟加法和乘法,开始的时候把第24行:if(c.num[len+1]!=0)c.len=len+1;写成了if(c.num[len+1]!=0)c.len++;导致计算错误,找了很久才发现问题,全是泪……一定要细心啊
AC代码:
#include <iostream>#include <cstring>using namespace std;struct bignum{ int len,num[1000];}dp[255];void add(bignum a,bignum b,bignum &c){ int len = a.len>b.len?a.len:b.len; for(int i=1;i<=len;i++) { c.num[i] = a.num[i]+b.num[i]; }// for(int i=len;i>=1;i--)cout<<c.num[i];// cout<<endl; for(int i=1;i<=len;i++) { if(c.num[i]>9) { c.num[i]-=10; c.num[i+1]++; } } if(c.num[len+1]!=0)c.len=len+1; else c.len = len;}void multi2(bignum &x){ int len = x.len; for(int i=1;i<=len;i++) { x.num[i]*=2; } for(int i=1;i<=len;i++) { if(x.num[i]>9) { x.num[i]-=10; x.num[i+1]++; } } if(x.num[len+1]!=0)x.len++;}int main(){ int n;/* dp[0].len=1; dp[0].num[1]=1; dp[1].len=1; dp[1].num[1]=1; for(int i=2;i<=250;i++) { multi2(dp[i-2]); add(dp[i-2],dp[i-1],dp[i]); }*/ while(cin>>n) { memset(dp,0,sizeof(dp)); dp[0].len=1; dp[0].num[1]=1; dp[1].len=1; dp[1].num[1]=1; for(int i=2;i<=n;i++) { multi2(dp[i-2]); add(dp[i-2],dp[i-1],dp[i]); } for(int i=dp[n].len;i>=1;i--) { cout<<dp[n].num[i]; } cout<<endl; } return 0;}
0 0
- poj2506(递推+高精度)
- poj2506 高精度递推
- POJ2506(递推+高精度)
- POJ2506 高精度+递推
- POJ2506 Tiling【高精度】【递推】
- POJ2506——Tiling(高精度+递推)
- POJ2506 Tiling(递推+大数)
- poj2506 大数递推
- 递推POJ2506
- poj2506——Tiling(递推+大数加)
- hdu1919(递推+高精度+HashMap)
- POJ 2506 Tiling(高精度+递推)
- POJ 2506 Tiling (递推+高精度)
- 【POJ】2506 - Tiling(递推,高精度)
- HDU2506 Tiling (高精度+递推)
- sgu284:Grammar(递推+高精度)
- bzoj2656 数列 高精度&递推
- uva 1647 高精度+递推
- 排序算法
- python开发环境搭建
- bash shell中expr命令下几种的使用
- ionic build android Could not resolve com.android.tools.build:gradle:1.5.0
- 反射API
- poj2506(递推+高精度)
- worldpress或zblog安装时建立数据库连接时出错
- javascript中关于字符串替换 replace() 方法的使用(咋个办呢 zgbn)
- Redis内存调优一例
- afnetworking中,规范json格式的代码---这样打印出来errormessage就非常的方便了,呵呵呵呵
- flume开发环境搭建
- Multiband DRC缺陷分析
- 234. Palindrome Linked List
- 界面元素构件