結果
| 問題 | No.3501 Digit Products 2 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-04-18 17:59:37 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,421 bytes |
| 記録 | |
| コンパイル時間 | 259 ms |
| コンパイル使用メモリ | 85,012 KB |
| 実行使用メモリ | 97,440 KB |
| 平均クエリ数 | 10.52 |
| 最終ジャッジ日時 | 2026-04-18 17:59:57 |
| 合計ジャッジ時間 | 13,626 ms |
|
ジャッジサーバーID (参考情報) |
judge1_1 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 43 WA * 29 |
ソースコード
n=int(input())
d=[[1]*10 for _ in range(n)]
d[0][0]=0
ok=0
k=[[-1]*n for _ in range(n)]
for l in range(n):
k[l][l]=0
def chk():
global d,k
ret=-1
for l in range(n):
for i in range(10):
if d[l][i]==0:
continue
ok=f=0
for r in range(n):
if r==l or k[l][r]<0:
continue
for j in range(10):
if d[r][j]==0:
continue
f|=1<<r
if k[l][r]==i*j:
ok|=1<<r
if ok!=f:
d[l][i]=0
if d[l].count(1)==1:
idx=d[l].index(1)
ans[l]=idx
if idx:
ret=l
return ret
ans=[-1]*n
m=n
for l in range(n):
if ans[l]!=-1:
continue
for r in range(n):
if k[l][r]!=-1 or ans[r]!=-1:
continue
m-=1
print('?',l,r)
k[l][r]=k[r][l]=int(input())
b=chk()
if b!=-1 or m==0:
break
if b!=-1 or m==0:
break
while m:
f=0
for l in range(n):
if ans[l]!=-1 or b==l:
continue
for r in range(n):
if b==-1:
if k[r][l]!=-1 or l==r:
continue
m-=1
print('?',r,l)
k[r][l]=k[l][r]=int(input())
f=1
b=chk()
else:
if k[b][l]!=-1:
continue
m-=1
print('?',b,l)
k[b][l]=k[l][b]=p=int(input())
ans[l]=p//ans[b]
f=1
chk()
if not f:
break
if -1 in ans:
ans=['-1']
print('!',''.join(str(i)for i in ans))