蓝桥杯 积木画
问题描述
小明最近迷上了积木画, 有这么两种类型的积木, 分别为 I 型(大小为 2 个单位面积) 和 L 型 (大小为 3 个单位面积):
同时, 小明有一块面积大小为 2×N 的画布, 画布由 2×N 个 1×1 区域构 成。小明需要用以上两种积木将画布拼满, 他想知道总共有多少种不同的方式? 积木可以任意旋转, 且画布的方向固定。
输入格式
输入一个整数 N,表示画布大小。
输出格式
输出一个整数表示答案。由于答案可能很大,所以输出其对 1000000007 取模后的值。
样例输入
3
样例输出
5
样例说明
五种情况如下图所示,颜色只是为了标识不同的积木:
评测用例规模与约定
对于所有测试用例,1≤N≤10000000.
本题为找规律题(不好找)
N=1时,1种
N=2时,2种
N=3时,5种
N=4时,11种
N=5时,24种
N=6时,53种
f(n) = 2 f(n-1) + f(n-3)
#include<iostream>
using namespace std;
typedef long long ll;
int n;
const int N = 1e7+10;
int mod = 1e9+7;
ll f[N] = {0, 1, 2, 5, 11};
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=5; i<=n; ++i)
{
f[i] = (2*f[i-1] + f[i-3]) % mod;
}
cout<<f[n] % mod;
return 0;
}