結果
| 問題 |
No.103 素因数ゲーム リターンズ
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-07-04 15:12:09 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 51 ms / 5,000 ms |
| コード長 | 935 bytes |
| コンパイル時間 | 480 ms |
| コンパイル使用メモリ | 82,424 KB |
| 実行使用メモリ | 63,196 KB |
| 最終ジャッジ日時 | 2024-12-14 05:23:19 |
| 合計ジャッジ時間 | 2,850 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 5 |
| other | AC * 20 |
ソースコード
N = 200000
div = [i for i in range(N)]
for i in range(2, int(N ** 0.5 + 1)):
if div[i] != i:
continue
for j in range(i * i, N, i):
if div[j] == j:
div[j] = i
m = int(input())
A = list(map(int, input().split()))
memo = {():0}
def f(lst):
tup = tuple(sorted(l for l in lst if l != 0))
if tup in memo:
return memo[tup]
se = set()
le = len(lst)
for i in range(le):
if lst[i] >= 1:
lst[i] -= 1
se.add(f(lst))
lst[i] += 1
if lst[i] >= 2:
lst[i] -= 2
se.add(f(lst))
lst[i] += 2
mex = 0
while mex in se:
mex += 1
memo[tup] = mex
return mex
xor = 0
for a in A:
cnt = {}
while a >= 2:
cnt[div[a]] = cnt.get(div[a], 0) + 1
a //= div[a]
lst = sorted(cnt.values())
xor ^= f(lst)
if xor == 0:
print("Bob")
else:
print("Alice")