結果

問題 No.3246 80% Accuracy Calculator
ユーザー Kude
提出日時 2025-08-22 23:31:51
言語 PyPy3
(7.3.15)
結果
RE  
実行時間 -
コード長 941 bytes
コンパイル時間 442 ms
コンパイル使用メモリ 82,604 KB
実行使用メモリ 86,044 KB
平均クエリ数 144.84
最終ジャッジ日時 2025-08-22 23:32:28
合計ジャッジ時間 6,801 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other RE * 43
権限があれば一括ダウンロードができます

ソースコード

diff #

# 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)

CNT = 0
def ask(x):
    global CNT
    CNT += 1
    assert CNT <= 8888
    print('?', 'ABC'[x])
    res = int(input())
    assert res != -1
    return res

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:
            print('+', ix, iz, iy)
            if get(iy) == now:
                iz = iy
                break
        if now == x * y:
            break
    iy = 3 ^ ix ^ iz
    while True:
        print('+', ix, ix, iy)
        if get(iy) == x << (k + 1):
            ix = iy
            break
print('!', 'ABC'[iz])
0