Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.92 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <map>
  4. #include <unordered_map>
  5. #include <string>
  6. #include <iomanip>
  7. #include <algorithm>
  8.  
  9. using namespace std;
  10. using pii = pair<int, int>;
  11. using ll = long long;
  12.  
  13. ll mod = 1000 * 1000 * 1000 + 7;
  14. constexpr ll max_n = 1000;
  15.  
  16. int main() {
  17.     int n;
  18.     cin >> n;
  19.     ll dp[max_n][2];
  20.     dp[0][1] = 0;
  21.     dp[0][0] = 1;
  22.     for (int i = 1; i <= n; ++i) {
  23.         dp[i][0] = 0;
  24.         dp[i][1] = 0;
  25.         if (i >= 3) {
  26.             dp[i][0] += dp[i - 3][0];
  27.             dp[i][1] += dp[i - 3][1];
  28.         }
  29.         if (i >= 2) {
  30.             dp[i][0] += dp[i - 2][0];
  31.             dp[i][1] += dp[i - 2][0] + 3 * dp[i - 2][1];
  32.         }
  33.         dp[i][0] += dp[i - 1][0];
  34.         dp[i][1] += dp[i - 1][1];
  35.         dp[i][0] %= mod;
  36.         dp[i][1] %= mod;
  37.     }
  38.     ll res = dp[n][0] + dp[n][1] + dp[n - 1][0] + 2 * dp[n - 1][1];
  39.     cout << res % mod << '\n';
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement