1. 程式人生 > >ZCMU-1618:骨牌覆蓋1(規律題)

ZCMU-1618:骨牌覆蓋1(規律題)

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;
}