結果
| 問題 |
No.7 プライムナンバーゲーム
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-12-29 13:34:22 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 741 ms / 5,000 ms |
| コード長 | 751 bytes |
| コンパイル時間 | 197 ms |
| コンパイル使用メモリ | 12,800 KB |
| 実行使用メモリ | 11,008 KB |
| 最終ジャッジ日時 | 2024-10-01 16:30:07 |
| 合計ジャッジ時間 | 5,824 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 17 |
ソースコード
# 2019/12/29
# メモ化
from collections import deque
n=int(input())
def sieve(n):
end=int(pow(n,0.5))+1
is_prime=[True]*(n+1)
is_prime[0]=False
is_prime[1]=False
for i in range(2,end+1):
if not is_prime[i]:continue
for j in range(i*2,n+1,i):
is_prime[j]=False
return [i for i in range(n+1) if is_prime[i]]
primes=deque(sieve(n))
memo=[False]*(n+1)
que=[]
p=primes.popleft()
for i in range(2,n+1):
while p<=i:
que.append(p)
if primes:
p=primes.popleft()
else:
p=float('inf')
break
for e in que:
if i-e<2:memo[i]|=False
else:memo[i]|=not memo[i-e]
if memo[i]:break
print('Win' if memo[n] else 'Lose')