結果

問題 No.7 プライムナンバーゲーム
コンテスト
ユーザー ei1333333
提出日時 2016-09-02 00:25:02
言語 C++11
(gcc 15.3.0 + boost 1.92.0)
コンパイル:
g++-15 -O2 -lm -std=gnu++11 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
AC  
実行時間 6 ms / 5,000 ms
+ 828µs
コード長 644 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 871 ms
コンパイル使用メモリ 177,172 KB
実行使用メモリ 9,764 KB
最終ジャッジ日時 2026-09-07 15:33:08
合計ジャッジ時間 2,288 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge3_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 17
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <bits/stdc++.h>

using namespace std;

const int SZ = 10000;

vector< int > primes;
int dp[SZ + 1];

bool rec(int val)
{
  if(val <= 1) return (true);
  if(~dp[val]) return (dp[val]);
  for(int i = 0; i < primes.size(); i++) {
    if(primes[i] > val) break;
    if(!rec(val - primes[i])) return (dp[val] = true);
  }
  return (dp[val] = false);
}

int main()
{
  bool prime[SZ + 1] = {};
  for(int i = 2; i <= SZ; ++i) {
    if(!prime[i]) {
      for(int j = i + i; j <= SZ; j += i) prime[j] = true;
      primes.push_back(i);
    }
  }

  int N;
  cin >> N;
  memset(dp, -1, sizeof(dp));
  cout << (rec(N) ? "Win" : "Lose") << endl;
}
0