結果
| 問題 |
No.7 プライムナンバーゲーム
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-06-03 07:12:23 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 2,064 ms / 5,000 ms |
| コード長 | 1,686 bytes |
| コンパイル時間 | 112 ms |
| コンパイル使用メモリ | 12,416 KB |
| 実行使用メモリ | 10,752 KB |
| 最終ジャッジ日時 | 2024-10-01 16:05:28 |
| 合計ジャッジ時間 | 15,088 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 17 |
ソースコード
'''
あなたと素数を習ったばかりのEveは、素数のゲームを思いついた。
ゲームの内容は以下のとおりです。
・まず初めに、先攻のプレイヤーに22以上の自然数NNが与えられます。
・その番のプレイヤーはNNに対して、「NN以下(NNも含む)の素数」のどれかで減算する、
その数をN′N′とすると、N′N′が00または11になってしまったら、そのプレイヤーの負けである。
・その後N′N′を新たなNNとし、相手にその数を渡し、以上を繰り返します。
まずあなたが先攻となりゲームを始めます。
この時、どちらも負けないように動くと考える。自然数NNが与えられた時、
あなたが勝つことが出来る場合WinWin、それ以外はLoseLoseを返してください。
'''
def prime_maker(x):
prime_list = [True] * (x + 1)
for i in range(2, x + 1):
if prime_list[i]:
for j in range(i + 1, x + 1):
if j % i == 0:
prime_list[j] = False
prime_list1 = []
for y_num, y in enumerate(prime_list):
if y:
prime_list1.append(y_num)
return prime_list1[2:]
if __name__ == '__main__':
A = int(input())
prime_list = prime_maker(A)
score_list = [False] * (A + 1)
score_list[0] = True
score_list[1] = True
count = 0
for i in range(2, A + 1):
for j in prime_list:
if i >= j and not score_list[i - j]:
score_list[i] = True
if score_list[A]:
print("Win")
else:
print("Lose")