結果

問題 No.3501 Digit Products 2
コンテスト
ユーザー titia
提出日時 2026-04-20 01:32:24
言語 Python3
(3.14.3 + numpy 2.4.4 + scipy 1.17.1)
コンパイル:
python3 -mpy_compile _filename_
実行:
python3 _filename_
結果
AC  
実行時間 192 ms / 2,000 ms
コード長 1,240 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 564 ms
コンパイル使用メモリ 20,700 KB
実行使用メモリ 35,464 KB
平均クエリ数 10.89
最終ジャッジ日時 2026-04-20 01:32:48
合計ジャッジ時間 16,341 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge3_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 72
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sys
input = sys.stdin.readline

N=int(input())

A=[-1]*N
E=[[] for i in range(N)]

for i in range(N-1):
    print("?",i,N-1,flush=True)
    ret=int(input())

    A[i]=ret
    E[N-1].append((i,ret))
    E[i].append((N-1,ret))

X=[]

for i in range(N):
    if A[i]>0:
        X.append(i)

if len(X)>=2:
    x=X[0]
    y=X[1]

    print("?",x,y,flush=True)
    ret=int(input())
    E[x].append((y,ret))
    E[y].append((x,ret))


ANS=[]

for i in range(1,10):
    flag=1
    S=[-1]*N
    for j in range(N):
        if A[j]==0:
            S[j]=0

    S[N-1]=i
    Q=[N-1]
    while Q:
        x=Q.pop()
        for to,kake in E[x]:
            if S[to]==-1:
                if kake%S[x]==0:
                    S[to]=kake//S[x]
                    Q.append(to)
                else:
                    flag=0
                    break
            else:
                if kake%S[x]==0 and S[to]==kake//S[x]:
                    pass
                else:
                    flag=0
                    break

    if flag==1 and 0<=min(S)<=9 and 0<=max(S)<=9:
        ANS.append(S)

if len(ANS)==1:
    S=ANS[0]
    S.reverse()
    S="".join(map(str,S))

    print("!",S,flush=True)
else:
    print("!",-1,flush=True)
            





0