結果
| 問題 |
No.2538 2進元ゲーム
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-09-30 19:45:22 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 298 ms / 2,000 ms |
| コード長 | 1,000 bytes |
| コンパイル時間 | 385 ms |
| コンパイル使用メモリ | 82,024 KB |
| 実行使用メモリ | 118,568 KB |
| 最終ジャッジ日時 | 2024-07-23 19:22:25 |
| 合計ジャッジ時間 | 5,105 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 37 |
ソースコード
import re
import sys
content = input()
pattern = r'^(\d+)$'
result = re.match(pattern, content)
if not result:
sys.exit("format error.")
n = int(content)
if not (1 <= n and n <= 10**5):
sys.exit("N")
content = input()
pattern = r'^(-?\d+)( (-?\d+))*$'
result = re.match(pattern, content)
if not result:
sys.exit("format error.")
a = list(map(int, content.split()))
if len(a) != n:
sys.exit("A")
for i in range(n):
if not (-(10**18) <= a[i] and a[i] <= 10**18):
sys.exit("A")
dp = {0 : 0}
def get_nimber(a):
global dp
if a < 0:
return 100
if a in dp:
return dp[a]
a0 = a
ex = [0] * 10
for i in range(60):
if a % 2 == 1:
g = get_nimber(i)
ex[g] = 1
a //= 2
for i in range(10):
if ex[i] == 0:
dp[a0] = i
return i
return -1
res = 0
for i in range(n):
g = get_nimber(a[i])
res ^= g
print(2 if res == 0 else 1)