题目描述
一天,晨晨的数学老师布置了一道题目,大意如下:用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;
解析
先设一个f[i]表示i* 3的地板铺的方法,f[1]=1;f[2]=3
i* 3的地板数是这样得到的:
(i-1)* 3的地板比i* 3的地板少的地方全铺上1* 1的瓷砖,只有一种铺法;或者在(i-2)* 3的地板比i* 3的地板少的地方铺上2* 2的瓷砖和2个1* 1的瓷砖,这有两种铺法
所以得到递推式:f[i]=f[i-1]+2* f[i-2];
于是乎.得到了递推式,我们就可以愉快的解决这个题了不存在的.
然后算一算发现超int了,那就换long long,发现还是超,换unsigned long long,发现又在n=62:3074457345618258603炸了.
emm,nice,所以suo要用大数板子.
不会.
于是看了一下递推式,嗯,齐次的,可以套特征方程.
化为
解得
然后套入特征方程得
根据f[1]和f[2]的值我们可以解出A和B的值
随后再把A,B的值带回f[n]求得f[n]的特征方程为:
然后只要求解2n+1的值就可以解决问题了不会
于是…可以选择特征方程解决问题,也可以用递推公式解决问题.好像都大数板子