結果
| 問題 |
No.7 プライムナンバーゲーム
|
| コンテスト | |
| ユーザー |
phantomile
|
| 提出日時 | 2015-12-22 04:10:41 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 99 ms / 5,000 ms |
| コード長 | 1,117 bytes |
| コンパイル時間 | 333 ms |
| コンパイル使用メモリ | 82,176 KB |
| 実行使用メモリ | 76,320 KB |
| 最終ジャッジ日時 | 2024-10-01 15:38:49 |
| 合計ジャッジ時間 | 2,307 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 17 |
ソースコード
"""
Yukicoder No.7
author: yamaton
date: 2015-12-18
"""
import math
import sys
import itertools
# sys.setrecursionlimit(100000)
#
def sieve(n):
remaining = [True] * (n + 1)
max_p = int(math.sqrt(n))
for p in range(2, max_p + 1):
if not remaining[p]:
continue
for q in range(p * p, n + 1, p):
remaining[q] = False
return [p for p in range(2, n + 1) if remaining[p]]
#
# @functools.lru_cache(maxsize=100000)
# def solve_old(n):
# if n == 0 or n == 1:
# return True
# assert n >= 2
# return any(not solve(n-i) for i in sieve(n))
def solve(n):
primes = sieve(n)
dp = [None] * (n + 1)
dp[0] = True
dp[1] = True
for i in range(2, n+1):
dp[i] = any(not dp[i-p] for p in
itertools.takewhile(lambda p: p <= i, primes))
return dp[n]
def tf_to_wl(tf):
return 'Win' if tf else "Lose"
def pp(*args, **kwargs):
return print(*args, file=sys.stderr, **kwargs)
def main():
n = int(input())
result = tf_to_wl(solve(n))
print(result)
if __name__ == '__main__':
main()
phantomile