Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.06 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <set>
  5.  
  6. using namespace std;
  7.  
  8. const int MAXN = 100001, MAXK = 350;
  9.  
  10. char dp[MAXN][MAXK];
  11.  
  12. int main() {
  13.     for (int i = 0; i < MAXN; ++i) {
  14.         for (int j = 0; j < MAXK; ++j) {
  15.             dp[i][j] = -1;
  16.         }
  17.     }
  18.    
  19.     for (int i = 1; i < MAXK; ++i) {
  20.         dp[0][i] = 0;
  21.     }
  22.    
  23.     for (int i = 1; i < MAXN; ++i) {
  24.         for (int j = 1; j < MAXK; ++j) {
  25.             dp[i][j] = 0;
  26.            
  27.             if (i - j >= 0 && dp[i - j][j] == 0) {
  28.                 dp[i][j] = 1;
  29.             }
  30.            
  31.             if (i - (j + 1) >= 0 && dp[i - (j + 1)][j + 1] == 0) {
  32.                 dp[i][j] = 1;
  33.             }
  34.         }
  35.     }
  36.    
  37.    
  38.     int n, i = 0;
  39.     cin >> n;
  40.     while (n != 0) {
  41.         i++;
  42.         if (dp[n - 1][1] == 0) {
  43.             cout << "Case #" << i <<": First player wins." << endl;
  44.         } else {
  45.             cout << "Case #" << i <<": Second player wins." << endl;
  46.         }
  47.         cin >> n;
  48.     }
  49.    
  50.     return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement