結果

問題 No.103 素因数ゲーム リターンズ
ユーザー nadarenadare
提出日時 2019-06-05 23:53:01
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
RE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,193 bytes
コンパイル時間 472 ms
コンパイル使用メモリ 12,040 KB
実行使用メモリ 10,788 KB
最終ジャッジ日時 2023-10-23 19:57:52
合計ジャッジ時間 2,787 ms
ジャッジサーバーID
(参考情報)
judge12 / judge13
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 RE -
testcase_01 RE -
testcase_02 RE -
testcase_03 RE -
testcase_04 RE -
testcase_05 RE -
testcase_06 RE -
testcase_07 RE -
testcase_08 RE -
testcase_09 RE -
testcase_10 RE -
testcase_11 RE -
testcase_12 RE -
testcase_13 RE -
testcase_14 RE -
testcase_15 RE -
testcase_16 RE -
testcase_17 RE -
testcase_18 RE -
testcase_19 RE -
testcase_20 RE -
testcase_21 RE -
testcase_22 RE -
testcase_23 RE -
testcase_24 RE -
権限があれば一括ダウンロードができます

ソースコード

diff #

from itertools import accumulate
from bisect import bisect, bisect_left
from functools import reduce
from itertools import accumulate, product
from operator import itemgetter, xor
from math import sqrt 

from fractions import gcd
from collections import Counter, deque, defaultdict
import sys
#input = sys.stdin.readline
from sys import setrecursionlimit
setrecursionlimit(10**9)

def inpl(): return list(map(int, input().split()))
N = int(input())
M = inpl()

def primes(N):
    sieve = [1]*(N+1)
    sieve[:2] = [0, 0]
    P = []
    for i in range(2, N+1):
        if sieve[i]:
            P.append(i)
            for j in range(2*i, N+1, i):
                sieve[j] = 0
    return P


def get_factors(X):
    res = defaultdict(int)
    for i in range(bisect(P, sqrt(X))):
        while True:
            d, m = divmod(X, P[i])
            if m:
                break
            res[P[i]] += 1
            X = d
    if X != 1:
        res[X] += 1
    return res

def get_grundy(ddic):
    res = 0
    for v in ddic.values():
        res ^= v%3
    return res

P = primes(10**4)
Nim = [get_grundy(get_factors(m)) for m in M]
if reduce(xor, Nim):
    print("Alice")
else:
    print("Bob")

0