trafik

Anty_183

May 26th, 2021
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.62 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using ll = long long;
  3. using namespace std;
  4.  
  5. int main() {
  6.     ll k, p;
  7.     cin >> k >> p;
  8.     vector <vector <ll>> dp(k + 1, vector <ll> (3));
  9.     if (k == 1) {
  10.         cout << 0;
  11.         return 0;
  12.     }
  13.     if (k == 2) {
  14.         cout << 1;
  15.         return 0;
  16.     }
  17.     dp[2][1] = 1;
  18.     dp[2][2] = 0;
  19.     dp[3][1] = 0;
  20.     dp[3][2] = 1;
  21.     for (ll i = 4; i <= k; ++i) {
  22.         if (i % 2 == 0) dp[i][1] = (dp[i / 2][1] + dp[i / 2][2]) % p;
  23.         else dp[i][1] = 0;
  24.         dp[i][2] = (dp[i - 1][1] + dp[i - 1][2]) % p;
  25.     }
  26.     cout << (dp[k][1] + dp[k][2]) % p;
  27.     return 0;
  28. }
  29.  
Advertisement
Add Comment
Please, Sign In to add comment