結果
問題 | No.3120 Lower Nim |
ユーザー |
![]() |
提出日時 | 2025-04-19 16:38:58 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 353 ms / 2,000 ms |
コード長 | 1,350 bytes |
コンパイル時間 | 541 ms |
コンパイル使用メモリ | 82,728 KB |
実行使用メモリ | 94,876 KB |
平均クエリ数 | 2685.91 |
最終ジャッジ日時 | 2025-04-19 16:39:12 |
合計ジャッジ時間 | 12,999 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 43 |
ソースコード
""" https://yukicoder.me/problems/no/3120 Aの総和が奇数なら先手勝ち 総和が奇数の状態で相手に渡すと負け Aの各要素を 2で割った商の総和が奇数なら、2を引いて渡せばok 相手は1を引いて返すことはできないので、2を引くことになる。 それもだめなら、4で割った商の総和を見ればいい? """ import sys N = int(input()) A = list(map(int,input().split())) ok = None for i in range(15): s = 0 bit = 2**i for a in A: s += a // bit if s % 2 == 1: ok = i break if ok != None: print ("First", flush=True) K = 2**ok else: print ("Second", flush=True) i,x = map(int,input().split()) i -= 1 A[i] -= x K = x status = int(input()) assert status == 0 # Kのbit while True: bit = None for i in range(15): if 2**i & K: bit = 2**i break for i in range(N): if bit <= A[i]: print (i+1,bit,flush=True) A[i] -= bit K = bit status = int(input()) if status == 1: sys.exit() assert status != -1 break i,x = map(int,input().split()) i -= 1 A[i] -= x K = x status = int(input()) assert status == 0