code

cookiebus 2024-02-04 16:22:46 10 返回题目

#include <bits/stdc++.h>
#define int long long

using namespace std;
const int mod = 1e9 + 7;
const int N = 1e6 + 10;
int f[N][7];
/*
f[i]["001"]
1"001"  -> 2"010", 3"011"
2"010"  -> 4"100", 5"101"
3"011"  -> 6"110",
4"100"  -> 1"001"
5"101"  -> 2"010", 3"011"
6"110"  -> 4"100", 5"101"
*/
signed main() {
    int n;
    cin >> n;
    if (n == 1)
        cout << 2;
    else if (n == 2)
        cout << 4;
    else {
        f[3][6] = f[3][1] = f[3][2] = f[3][3] = f[3][4] = f[3][5] = 1;

        for (int i = 4; i <= n; ++i) {
            f[i][2] += f[i - 1][1];
            f[i][3] += f[i - 1][1];

            f[i][4] += f[i - 1][2];
            f[i][5] += f[i - 1][2];

            f[i][6] += f[i - 1][3];
            f[i][1] += f[i - 1][4];

            f[i][2] += f[i - 1][5];
            f[i][3] += f[i - 1][5];

            f[i][4] += f[i - 1][6];
            f[i][5] += f[i - 1][6];

            for (int j = 1; j <= 6; ++j) f[i][j] %= mod;
        }

        cout << (f[n][6] + f[n][1] + f[n][2] + f[n][3] + f[n][4] + f[n][5]) % mod;
    }
}
{{ vote && vote.total.up }}