結果
| 問題 | No.3501 Digit Products 2 |
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2026-04-20 01:32:24 |
| 言語 | Python3 (3.14.3 + numpy 2.4.4 + scipy 1.17.1) |
| 結果 |
AC
|
| 実行時間 | 192 ms / 2,000 ms |
| コード長 | 1,240 bytes |
| 記録 | |
| コンパイル時間 | 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 |
ソースコード
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)
titia