首页 > 代码库 > 51Nod 1031 骨牌覆盖

51Nod 1031 骨牌覆盖

在2*N的一个长方形方格中,用一个1*2的骨牌排满方格。
 
问有多少种不同的排列方法。
 
例如:2 * 3的方格,共有3种不同的排法。(由于方案的数量巨大,只输出 Mod 10^9 + 7 的结果)
技术分享
Input
输入N(N <= 1000)
Output
输出数量 Mod 10^9 + 7
Input示例
3
Output示例
3

思路:斐波那契
 1 #include <iostream>
 2 #include <algorithm>
 3 #include <stdio.h>
 4 #include <cstring>
 5 using namespace std;
 6 #define ll long long
 7 const int mod = 1e9+7;
 8 ll a[10001];
 9 void lala()
10 {
11     a[1]=1;
12     a[2]=2;
13     for(int i=3;i<10001;i++){
14         a[i]=a[i-1]%mod+a[i-2]%mod;
15         a[i]%=mod;
16     }
17 }
18 int main()
19 {
20     int n;
21     cin>>n;
22     lala();
23     ll m=a[n];
24     cout<<m<<endl;
25     return 0;
26 }

 

51Nod 1031 骨牌覆盖