結果
問題 | No.3112 Decrement or Mod Game |
ユーザー |
![]() |
提出日時 | 2025-04-19 11:25:02 |
言語 | C++17(clang) (17.0.6 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 901 bytes |
コンパイル時間 | 8,302 ms |
コンパイル使用メモリ | 138,208 KB |
実行使用メモリ | 7,848 KB |
最終ジャッジ日時 | 2025-04-19 11:25:12 |
合計ジャッジ時間 | 3,413 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 55 WA * 10 |
ソースコード
#include <iostream> #include <vector> #include <algorithm> #include <cmath> #include <string> using namespace std; typedef unsigned long long ll; #define rep(i, n) for (int i = 0; i < int(n); i++) int memo[100][100]; int dfs(ll a, ll b) { if (a < 0 || b < 0) throw "a or b is negative"; if (a == 1) return 1; if (a >= b && a % b == 0) return 1; if (memo[a][b] != -1) return memo[a][b]; return memo[a][b] = max(!dfs(b, a % b), !dfs(b, a - 1)); } int main() { ll a, b; cin >> a >> b; if (a == 1) { cout << "Alice" << endl; return 0; } else if (b == 1) { cout << "Alice" << endl; return 0; } else if (a < 100 && b < 100) { rep(i, 100) rep(j, 100) memo[i][j] = -1; cout << (dfs(a, b) ? "Alice" : "Bob") << endl; return 0; } else if (a > b) { cout << "Alice" << endl; return 0; } else { cout << "Bob" << endl; return 0; } }