Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <map>
- #include <unordered_map>
- #include <string>
- #include <iomanip>
- #include <algorithm>
- using namespace std;
- using pii = pair<int, int>;
- using ll = long long;
- ll mod = 1000 * 1000 * 1000 + 7;
- constexpr ll max_n = 1000;
- int main() {
- int n;
- cin >> n;
- ll dp[max_n][2];
- dp[0][1] = 0;
- dp[0][0] = 1;
- for (int i = 1; i <= n; ++i) {
- dp[i][0] = 0;
- dp[i][1] = 0;
- if (i >= 3) {
- dp[i][0] += dp[i - 3][0];
- dp[i][1] += dp[i - 3][1];
- }
- if (i >= 2) {
- dp[i][0] += dp[i - 2][0];
- dp[i][1] += dp[i - 2][0] + 3 * dp[i - 2][1];
- }
- dp[i][0] += dp[i - 1][0];
- dp[i][1] += dp[i - 1][1];
- dp[i][0] %= mod;
- dp[i][1] %= mod;
- }
- ll res = dp[n][0] + dp[n][1] + dp[n - 1][0] + 2 * dp[n - 1][1];
- cout << res % mod << '\n';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement