結果
| 問題 |
No.7 プライムナンバーゲーム
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-09-28 22:38:34 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 5 ms / 5,000 ms |
| コード長 | 869 bytes |
| コンパイル時間 | 1,248 ms |
| コンパイル使用メモリ | 162,272 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-10-01 16:07:10 |
| 合計ジャッジ時間 | 1,927 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 17 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
void GetPrimes(int N, vector<int> &v) {
v = vector<int>();
int c = 1;
while (c < N) {
c++;
bool flag = true;
int d = (int)sqrt(c);
for(int i = 0; i < v.size(); i++) {
if(c % v[i] == 0) {
flag = false;
break;
}
if (d < v[i]) break;
}
if(flag) v.push_back(c);
}
}
int dp[10001];
vector<int> P;
int recursive(int n) {
if(dp[n] >= 0) return dp[n];
if(n < 2) return dp[n] = 1;
for(int i = 0; i < P.size(); i++) {
if(n < P[i]) break;
if(!recursive(n - P[i])) return dp[n] = 1;
}
return dp[n] = 0;
}
int main() {
GetPrimes(20000, P);
for(int i = 0; i < 10001; i++) {
dp[i] = -1;
}
int N;
cin >> N;
recursive(N);
cout << (dp[N] ? "Win" : "Lose") << endl;
}