铺地砖-中国石油大学oj(代码待补)

版权声明:只要我还活着,我就要凿穿codeforces. https://blog.csdn.net/UnKfrozen/article/details/85019323

题目描述

  一天,晨晨的数学老师布置了一道题目,大意如下:用1×1和2×2的磁砖不重叠地铺满n×3的地板,共有多少种方案?
  例如:n=1时:1×3的地板方法就一个,直接由三个1×1的磁砖铺满.n=2时:2×3的地板可以由下面3种方案铺满:
10

输入

  第一行:一个整数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要用大数板子.
  不会.
  于是看了一下递推式,嗯,齐次的,可以套特征方程.
  8
  化为
  7
  解得
  6
  然后套入特征方程得
  5
  根据f[1]和f[2]的值我们可以解出A和B的值
  4
  3
  2
  随后再把A,B的值带回f[n]求得f[n]的特征方程为:
  1
  然后只要求解2n+1的值就可以解决问题了不会
于是…可以选择特征方程解决问题,也可以用递推公式解决问题.好像都大数板子

猜你喜欢

转载自blog.csdn.net/UnKfrozen/article/details/85019323