結果

問題 No.3501 Digit Products 2
コンテスト
ユーザー moon17
提出日時 2026-04-18 17:59:37
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
WA  
実行時間 -
コード長 1,421 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 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
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

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