結果

問題 No.3737 Quiz Time
コンテスト
ユーザー Kurao
提出日時 2026-09-19 17:25:52
言語 PyPy3
(7.3.23 + ACL)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
AC  
実行時間 302 ms / 2,000 ms
+ 4µs
コード長 1,850 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 77 ms
コンパイル使用メモリ 82,536 KB
実行使用メモリ 77,416 KB
平均クエリ数 84.22
最終ジャッジ日時 2026-09-19 17:26:18
合計ジャッジ時間 6,313 ms
ジャッジサーバーID
(参考情報)
judge5_0 / <nil>
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 50
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

from __future__ import annotations
import sys
sys.setrecursionlimit(2*10**7)
#↓codon===============================
import string
Alp_low=list(string.ascii_lowercase)
Alp_up=list(string.ascii_uppercase)
Digit="0123456789"
dij=[[0,1],[1,0],[0,-1],[-1,0]]
def nin():
    return list(map(int,input().split()))
def deq(x):
    return [i-1 for i in x]
mod=998244353
_factorial=[1]
def factorial(n):
    while len(_factorial)<=n:
        _factorial.append((_factorial[-1]*len(_factorial))%mod)
    return _factorial[n]

_inv_factorial=[1]
def inv_factorial(n):
    while len(_inv_factorial)<=n:
        _inv_factorial.append((_inv_factorial[-1]*pow(len(_inv_factorial),mod-2,mod))%mod)
    return _inv_factorial[n]

def binom(n,r):
    if r>=mod:
        raise ValueError("r is too big")
    if n<0:
        return 0
    if r>n:
        return 0
    if r<0:
        return 0
    ans=((factorial(n)*inv_factorial(r))%mod*inv_factorial(n-r))%mod
    return ans

def main():
    p,=nin()
    def ask(i,j):
        print("?",i+1,j+1)
        return nin()[0]-1
    a=ask(0,0)
    b=ask(0,1)
    if a%p==b%p:
        x=[-1]*p
        y=[-1]*p
        x[0]=a%p
        y[0]=a//p
        y[1]=b//p
        for i in range(2,p):
            a=ask(i,i)
            x[i]=a%p
            y[i]=a//p
        sx=set(x)
        x[1]=[i for i in range(p) if i not in sx][0]
        print("!")
        for i in range(p):
            print(*[x[i]+y[j]*p+1 for j in range(p)])
    else:
        x=[-1]*p
        y=[-1]*p
        x[0]=a//p
        y[0]=a%p
        y[1]=b%p
        for i in range(2,p):
            a=ask(i,i)
            x[i]=a//p
            y[i]=a%p
        sx=set(x)
        x[1]=[i for i in range(p) if i not in sx][0]
        print("!")
        for i in range(p):
            print(*[x[i]*p+y[j]+1 for j in range(p)])

if __name__=="__main__":
    main()
0