結果

問題 No.7 プライムナンバーゲーム
ユーザー hogeover30hogeover30
提出日時 2015-02-02 02:12:04
言語 C++11
(gcc 11.4.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 584 bytes
コンパイル時間 332 ms
コンパイル使用メモリ 53,092 KB
最終ジャッジ日時 2024-11-14 18:59:06
合計ジャッジ時間 887 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
main.cpp:6:1: error: ‘vector’ does not name a type
    6 | vector<int> p;
      | ^~~~~~
main.cpp: In function ‘bool win(int)’:
main.cpp:13:19: error: ‘p’ was not declared in this scope
   13 |     for(int i=0;i<p.size()&&p[i]+1<n;++i)
      |                   ^
main.cpp: In function ‘int main()’:
main.cpp:21:9: error: ‘p’ was not declared in this scope
   21 |         p.push_back(i);
      |         ^

ソースコード

diff #

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int c[10010], memo[10010];
vector<int> p;

bool win(int n)
{
    if (n<2) return false;
    int& res=memo[n];
    if (~res) return res;
    for(int i=0;i<p.size()&&p[i]+1<n;++i)
        if (!win(n-p[i])) return res=true;
    return res=false;
}

int main()
{
    for(int i=2;i<10010;++i) if (!c[i]) {
        p.push_back(i);
        for(int j=i+i;j<10010;j+=i) c[j]=1;
    }

    int n;
    while (cin>>n) {
        memset(memo, -1, sizeof(memo));
        cout<<(win(n) ? "Win" : "Lose")<<endl;
    }
}
0