結果

問題 No.7 プライムナンバーゲーム
ユーザー E31415926
提出日時 2016-04-04 17:18:50
言語 C++11(廃止可能性あり)
(gcc 13.3.0)
結果
WA  
実行時間 -
コード長 948 bytes
コンパイル時間 577 ms
コンパイル使用メモリ 56,164 KB
実行使用メモリ 6,820 KB
最終ジャッジ日時 2024-10-03 04:12:55
合計ジャッジ時間 1,186 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 7 WA * 10
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<iostream>
using namespace std;
#define prime		0
#define notprime	1
#define turn_me		1
#define turn_eve	-1

char *p;
void primelist(char p[10000]);
int game(int turn, int n);

int main()
{
	int n, result;
	p = new char[10000]{ notprime,notprime };
	cin >> n;
	if (n == 2 || n == 3) {
		cout << "Win" << endl;
		return 0;
	}
	primelist(p);
	result = game(turn_me, n);
	if (result == turn_me)cout << "Win" << endl;
	else cout << "Lose" << endl;
	return 0;
}

void primelist(char p[10000])
{
	int i, j;
	for (i = 2; i < 10000; i++)p[i] = notprime;
	for (i = 3; i < 100; i += 2) {
		if (p[i] == prime) {
			for (j = i*i; j < 10000; j += i) p[i] = notprime;
		}
	}
	return;
}

int game(int turn, int n)
{
	int i, x;
	if (p[n - 2] == prime || p[n - 3] == prime)return turn;
	if (game(-turn, n - 2) == turn)return turn;
	for (i = 3; i < n - 1; i += 2) {
		if (p[i] == prime) {
			if (game(-turn, n - i) == turn)return turn;
		}
	}
	return -turn;
}
0