結果
問題 |
No.3246 80% Accuracy Calculator
|
ユーザー |
![]() |
提出日時 | 2025-08-22 23:35:22 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 189 ms / 2,000 ms |
コード長 | 1,089 bytes |
コンパイル時間 | 300 ms |
コンパイル使用メモリ | 82,416 KB |
実行使用メモリ | 94,624 KB |
平均クエリ数 | 1269.93 |
最終ジャッジ日時 | 2025-08-22 23:36:15 |
合計ジャッジ時間 | 9,676 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 43 |
ソースコード
# from math import * # k = int(input()) # p = 0 # for i in range(k // 2 + 1, k + 1): # p += 0.8 ** i * 0.2 ** (k - i) * comb(k, i) # print(p) ABC = 'ABC' CNT = 0 def ask(x): global CNT CNT += 1 assert CNT <= 8888 print('?', ABC[x]) res = int(input()) assert res != -1 return res def add(i, j, k): global CNT CNT += 1 assert CNT <= 8888 print('+', ABC[i], ABC[j], ABC[k]) res = int(input()) assert res == 0 def get(i): v = f = 0 while f < 44: r = ask(i) if f == 0: v, f = r, 1 elif v == r: f += 1 else: f -= 1 return v x, y = get(0), get(1) ix, iz = 0, 2 now = 0 for k in range(y.bit_length()): if y >> k & 1: now += x << k iy = 3 ^ ix ^ iz while True: add(ix, iz, iy) if get(iy) == now: iz = iy break if now == x * y: break iy = 3 ^ ix ^ iz while True: add(ix, ix, iy) if get(iy) == x << (k + 1): ix = iy break print('!', 'ABC'[iz])