Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <set>
- using namespace std;
- const int MAXN = 100001, MAXK = 350;
- char dp[MAXN][MAXK];
- int main() {
- for (int i = 0; i < MAXN; ++i) {
- for (int j = 0; j < MAXK; ++j) {
- dp[i][j] = -1;
- }
- }
- for (int i = 1; i < MAXK; ++i) {
- dp[0][i] = 0;
- }
- for (int i = 1; i < MAXN; ++i) {
- for (int j = 1; j < MAXK; ++j) {
- dp[i][j] = 0;
- if (i - j >= 0 && dp[i - j][j] == 0) {
- dp[i][j] = 1;
- }
- if (i - (j + 1) >= 0 && dp[i - (j + 1)][j + 1] == 0) {
- dp[i][j] = 1;
- }
- }
- }
- int n, i = 0;
- cin >> n;
- while (n != 0) {
- i++;
- if (dp[n - 1][1] == 0) {
- cout << "Case #" << i <<": First player wins." << endl;
- } else {
- cout << "Case #" << i <<": Second player wins." << endl;
- }
- cin >> n;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement