結果
問題 | No.103 素因数ゲーム リターンズ |
ユーザー |
![]() |
提出日時 | 2023-04-14 18:06:30 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 33 ms / 5,000 ms |
コード長 | 890 bytes |
コンパイル時間 | 153 ms |
コンパイル使用メモリ | 12,544 KB |
実行使用メモリ | 10,880 KB |
最終ジャッジ日時 | 2024-10-10 09:10:52 |
合計ジャッジ時間 | 1,899 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 20 |
ソースコード
import sys, mathinput = lambda: sys.stdin.readline()[:-1]def MI(): return map(int, input().split())inf = 10**18sys.setrecursionlimit(10**5) # Codeforcesでは350000程度に# 素因数分解√ndef prime_fac(n):res = []x = ny = 2while y*y <= x:ex = 0while x % y == 0:ex += 1x //= yif ex > 0: res.append((y, ex))y += 1if x > 1: res.append((x, 1))return resn, = MI()x = list(MI())# メモ化再帰from functools import lru_cache@lru_cache(maxsize=None) # 再帰関数の直前に置くdef get_Grundy(i):res = i % 3if i-1>=0 and get_Grundy(i-1)==i:res = i+1if i-2>=0 and get_Grundy(i-2)==i:res = i+1return res % 3ans = 0for i in x:i_fac = prime_fac(i)for _, c in i_fac:ans ^= get_Grundy(c)print("Alice" if ans!=0 else "Bob")