不要11

505 词

题目描述

长度为n但是不含11的字符串(只含01构成)有多少?(允许有前导0)

输入

一个正整数长度n$(1<=n<=1000)$

输出

所有不含有11的字符串的总数由于数值很大,请输出对与$1000000007$取模的结果

样例输入

1
2

样例输出

1
3

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cstring>
using namespace std;
int main() {
int n;
cin >> n;
long long dp[1001][2];
memset(dp, 0, sizeof(dp));
dp[1][0] = 1;
dp[1][1] = 1;
for (int i = 2; i <= n; i++) {
dp[i][0] = (dp[i - 1][0] + dp[i - 1][1]) % 1000000007;
dp[i][1] = dp[i - 1][0] % 1000000007;
}
cout << (dp[n][0] + dp[n][1]) % 1000000007 << endl;
return 0;
}