Problem E: 骨牌覆盖1
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 376 Solved: 179
[Submit][Status][Web Board]
Description
我们有一个2xN的长条形棋盘,然后用1x2的骨牌去覆盖整个棋盘。对于这个棋盘,一共有多少种不同的覆盖方法呢?
Input
输入n,n<=100000
Output
覆盖方案总数对19999997取余
Sample Input
1
2
Sample Output
1
2
HINT
【解析】
这种题目看着就是规律题。列几个发现好像是斐波那契,那就这样试一下好了。问题是这个N可以很大,所以题目要取余。
虽说有大佬用快速幂矩阵写的,可是萌新看不懂还没学过!那我就只能打表了。。。。
#include <bits/stdc++.h>
using namespace std;
int fib[100010] = { 1,1,2 };
void f()
{
for (int i = 3; i < 100010; i++)
fib[i] = (fib[i - 1] + fib[i - 2]) % 19999997;//每次都取余
}
int main()
{
int n;
f();
while (~scanf("%d", &n))
printf("%d\n", fib[n]);
return 0;
}