結果
| 問題 |
No.7 プライムナンバーゲーム
|
| コンテスト | |
| ユーザー |
moti
|
| 提出日時 | 2015-08-01 21:12:48 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,072 bytes |
| コンパイル時間 | 763 ms |
| コンパイル使用メモリ | 91,164 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-18 00:42:34 |
| 合計ジャッジ時間 | 1,820 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 7 WA * 10 |
ソースコード
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <complex>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <iomanip>
#include <assert.h>
#include <array>
#include <cstdio>
#include <cstring>
using namespace std;
#define REP(i,a,b) for(int i=a;i<(int)b;i++)
#define rep(i,n) REP(i,0,n)
typedef long long ll;
int memo[10001];
int pr[10001];
int vpr[10001];
int PSIZE;
bool solve(int curr) {
if(curr <= 1) { return 0; }
int& ret = memo[curr];
if(ret >= 0) { return ret; }
ret = 0;
for(int i=0; i<PSIZE; i++) {
if(vpr[i] > curr) { break; }
ret = ret || !solve(curr - vpr[i]);
}
return ret;
}
int main() {
memset(memo, -1, sizeof memo);
int N;cin >> N;
fill(pr, pr+N+1, 1);
pr[0] = pr[1] = 0;
for(int i=2; (ll)i*i < N+1; i++)
if(pr[i])
for(int j=i*i; j<=N+1; j+=i)
pr[j] = 0;
for(int i=0; i<N+1; i++) {
if(pr[i]) vpr[PSIZE++] = i;
}
cout << (solve(N) ? "Win" : "Lose") << endl;
return 0;
}
moti