铺地砖(找递推式 + 大数)
铺地砖
时间限制: 1 Sec 内存限制: 128 MB
题目描述
一天,晨晨的数学老师布置了一道题目,大意如下:用1×1和2×2的磁砖不重叠地铺满n×3的地板,共有多少种方案?
例如:n=1时:1×3的地板方法就一个,直接由三个1×1的磁砖铺满。
n=2时:2×3的地板可以由下面3种方案铺满:
输入
第一行:一个整数n(1≤n≤100)。
输出
输出铺满n×3的地板的方案数。
样例输入
复制样例数据
3
样例输出
5
提示
对于20%的数据,1≤n≤15;
对于50%的数据,1≤n≤30;
对于100%的数据,1≤n≤100;
设宽为n的时候方案数为f[n];
根据这张图可以发现,宽为2,长为3的有3种方法。由于长是固定为3的,那么当宽大于2的时候,可以试着找
通过n-1,n-2的宽度来找,去掉n-1行,那么就剩下最后一行,只能铺1*1的砖3块,所以为f[n-1];去掉n-2行,那么还剩下两行,也就只有上面三种方法,是3种吗,看方法三,和去掉n-1行重复了,所以只有2种方法为2*f[n-2];
所以总共f[n]=f[n-1]+2*f[n-2];
由于数据太大,用大数做。
/**/
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cctype>
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <stack>
#include <queue>typedef long long LL;
using namespace std;int f[105][10005];
int n;void solve(int a[], int b[], int c[]){for (int i = 1; i <= b[0]; i++){a[i] += 2 * b[i];if(a[i] > 9){a[i + 1] += a[i] / 10;a[i] %= 10;}}int len = b[0];while(a[len + 1]) len++;for (int i = 1; i <= c[0]; i++){a[i] += c[i];if(a[i] > 9){a[i + 1]++;a[i] -= 10;}}int cnt = c[0];while(a[cnt + 1]){if(a[cnt + 1] > 9){a[cnt + 2]++;a[cnt + 1] -= 10;cnt++;}else{cnt++;break;}}a[0] = max(cnt, len);
}int main()
{//freopen("in.txt", "r", stdin);//freopen("out.txt", "w", stdout);scanf("%d", &n);f[1][0] = 1, f[1][1] = 1, f[2][0] = 1, f[2][1] = 3;for (int i = 3; i <= n; i++){solve(f[i], f[i - 2], f[i - 1]);}for (int i = f[n][0]; i >= 1; i--) printf("%d", f[n][i]);printf("\n");return 0;
}
/**/
铺地砖(找递推式 + 大数)相关推荐
- 10.02 T3 打表找递推式+十进制快速幂 九校联考凉心模拟DAY1T1
题目背景 金企鹅同学非常擅长用1*2的多米诺骨牌覆盖棋盘的题.有一天,正 在背四六级单词的他忽然想:既然两个格子的积木叫"多米诺(domino)",那 么三个格子的的积木一定叫&q ...
- [递推式求解、多指针、前缀和]XATU第七届算法大赛
文章目录 赛后感想 1.2题略 3 乐华水上梦幻乐园之拖鞋失踪案[概率论.递推式求解] 题意 分析 代码 4.5.6.7.8题略 9 Ugly Number[多指针] 题意 做法1[BFS with ...
- 【笔记】从递推式得到通项公式的几种方法
开头瞎扯 数列这玩意在竞赛中考的不少,可以变形一些式子,所以做一个小总结 如果题目中出现了一个数列的式子,将其化为通项公式有可能可以快速求解或者是便于题目变形并发现题目性质 解题套路 对于大部分情况来 ...
- Berlekamp-Massey 算法(求数列的最短递推式)
用于求数列的最短递推式. 本文参考自 https://www.cnblogs.com/jz-597/p/14983564.html. 增量法,设 RiR_iRi 表示第 iii 个历史递推式,当前为 ...
- 分治法 分治法求解递推式
分治法 分治法基本就是下面的三步 分(divide):无法有效解决的划分更小的问题 治(conquer):递归求每一个子问题的解 合(combine):合并解得出原问题解 MergeSort:排列 1 ...
- 算法分析中递推式的一般代数解法
算法分析中经常遇到需要求解递推式的情况,即将递推式改写为等价的封闭形式.例如汉诺塔问题的时间复杂度递推形式为T(n)=2T(n−1)+1(n≥1)T(n)=2T(n−1)+1(n≥1),可以解出封闭形 ...
- UVA - 10253 Series-Parallel Networks(递推式、记忆化搜索写法)
题目:UVA-10253 题目翻译(来自蓝书): 串并联网络有两个端点,一个叫源,一个叫汇,递归定义如下: (1) 一条单独的边是串并联网络. (2) 若G1和G2是串并联网络,把它们的源和源接在一起 ...
- 【模板】BM + CH(线性递推式的求解,常系数齐次线性递推)
这里所有的内容都将有关于一个线性递推: $f_{n} = \sum\limits_{i = 1}^{k} a_{i} * f_{n - i}$,其中$f_{0}, f_{1}, ... , f_{k ...
- hdu 2604 Queuing AC自动机构造递推式-矩阵-结果
http://acm.hdu.edu.cn/showproblem.php?pid=2604 题意: L个人排队,这一队里男性用m表示,女性用f表示,问长度为L的序列里面不包含形如"fmf& ...
最新文章
- 安卓APP_ 布局(7) —— ViewPager翻页
- linux ntfs 新建,Linux在NTFS中创建的文件的权限
- Linq to SQL 的增删改查操作
- 浅谈基于软交换的下一代网络技术
- 将提取出的yuv三个分量序列合并成一个完整的彩色yuv序列(matlab实现)
- ELK 6下日志平台监控Nginx日志构建实践
- python在线朗读-使用python编写一个语音朗读闹钟功能的示例代码
- 删除数组中重复的元素
- bzoj4030【HEOI2015】小L的白日梦
- 小米红米手机ROM制作工具,支持编辑修改,精简app,定制化修改,小白也可上手。
- 互联网创业公司的管理
- K100多功能嵌入吞吐式电动发卡读写一体机|读卡器技术选型问答
- 如何通过限制 IP 相关信息 | 控制用户访问站点频率
- 实战之jvm-sandbox动态加载插件实现
- 2018年上半年系统分析师上午试题答案
- Linux sed实战(MarkDown版本)
- 深度linux没有硬盘,安装Deepin系统到硬盘分区部分没有发现硬盘数据的解决
- 外包 | py2 下的 pickle 转成 py3 下的 pickle
- 机器学习入门视频总结
- 判断腾讯QQ是否在线