結果

問題 No.7 プライムナンバーゲーム
ユーザー kichirb3kichirb3
提出日時 2018-03-07 23:20:42
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
AC  
実行時間 278 ms / 5,000 ms
コード長 1,090 bytes
コンパイル時間 191 ms
コンパイル使用メモリ 12,544 KB
実行使用メモリ 11,136 KB
最終ジャッジ日時 2024-10-01 16:09:04
合計ジャッジ時間 2,835 ms
ジャッジサーバーID
(参考情報)
judge3 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 28 ms
10,624 KB
testcase_01 AC 27 ms
10,624 KB
testcase_02 AC 278 ms
11,008 KB
testcase_03 AC 42 ms
10,624 KB
testcase_04 AC 32 ms
10,752 KB
testcase_05 AC 31 ms
10,624 KB
testcase_06 AC 102 ms
10,752 KB
testcase_07 AC 77 ms
10,752 KB
testcase_08 AC 49 ms
10,752 KB
testcase_09 AC 132 ms
10,880 KB
testcase_10 AC 28 ms
10,752 KB
testcase_11 AC 76 ms
10,752 KB
testcase_12 AC 198 ms
11,008 KB
testcase_13 AC 215 ms
11,136 KB
testcase_14 AC 268 ms
11,136 KB
testcase_15 AC 261 ms
11,008 KB
testcase_16 AC 243 ms
11,008 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

# -*- coding: utf-8 -*-
"""
No.7 プライムナンバーゲーム
https://yukicoder.me/problems/no/7

"""
import sys
from sys import stdin
input = stdin.readline


def create_prime_list(limit):
    """
    エラトステネスの篩でlimitまでの素数リストを求める
    https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9
    """
    x = limit**0.5
    primes = []
    nums = [x for x in range(2, limit+1)]
    while nums[0]<=x:
        primes.append(nums[0])
        current_prime = nums[0]
        nums = [x for x in nums if x%current_prime != 0]
    primes.extend(nums)
    return primes


def main(args):
    N = int(input())

    primes = create_prime_list(N)

    lut = [False] * (N+1)       #  先攻が勝てるかどうかの判定表
    for i in range(4, N+1):
        for p in primes:
            if 2 <= i-p and lut[i-p] is False:
                lut[i] = True
                break

    if lut[N]:
        print('Win')
    else:
        print('Lose')


if __name__ == '__main__':
    main(sys.argv[1:])
0