結果

問題 No.3112 Decrement or Mod Game
ユーザー moti
提出日時 2025-04-19 11:25:42
言語 C++17(clang)
(17.0.6 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 905 bytes
コンパイル時間 1,210 ms
コンパイル使用メモリ 138,336 KB
実行使用メモリ 7,848 KB
最終ジャッジ日時 2025-04-19 11:25:45
合計ジャッジ時間 2,475 ms
ジャッジサーバーID
(参考情報)
judge3 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 55 WA * 10
権限があれば一括ダウンロードができます

ソースコード

diff #

#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 (a % b == 0) {
    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;
  }
}
0