結果

問題 No.3501 Digit Products 2
コンテスト
ユーザー tassei903
提出日時 2026-04-17 23:50:07
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
AC  
実行時間 53 ms / 2,000 ms
コード長 1,291 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 384 ms
コンパイル使用メモリ 85,120 KB
実行使用メモリ 72,984 KB
平均クエリ数 10.89
最終ジャッジ日時 2026-04-17 23:50:22
合計ジャッジ時間 8,748 ms
ジャッジサーバーID
(参考情報)
judge1_1 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 72
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sys
ni = lambda :int(input())
na = lambda :list(map(int,input().split()))
yes = lambda :print("yes");Yes = lambda :print("Yes");YES = lambda : print("YES")
no = lambda :print("no");No = lambda :print("No");NO = lambda : print("NO")
#####################################################################

from math import floor
def ask(i, j):
    if i > j:
        i, j = j, i
    print("?", i, j, flush= True)
    x = ni()
    if x == -1:
        exit()
    return x

def ans(x):
    if x == -1:
        print("!", x, flush=True)
    else:
        print("!", "".join(map(str, x[::-1])), flush=True)

n = ni()
t = []
g = [0] * n
res = [-1] * n
for i in range(n-1):
    g[i] = ask(i, n-1)
    if g[i] != 0:
        t.append(i)
    else:
        res[i] = 0
    if len(t) >= 2:
        break

if len(t) == 0:
    ans(-1)
elif len(t) == 1:
    if g[t[0]] in [1, 25, 49, 64, 81]:
        res[t[0]] = int(g[t[0]] ** 0.5)
        res[-1] = int(g[t[0]] ** 0.5)
        ans(res)
    else:
        ans(-1)
else:
    X = g[t[0]]
    Y = g[t[1]]
    Z = ask(t[0], t[1])
    k = floor(0.5 + (X * Y * Z) ** 0.5)
    # print(X, Y, Z)
    res[-1] = k // Z
    res[t[0]] = k // Y
    res[t[1]] = k // X

    for i in range(t[1] + 1, n-1):
        res[i] = ask(n-1, i) // res[-1]
    ans(res)

"50905020"
0