結果

問題 No.3567 Modulo Grid
コンテスト
ユーザー titia
提出日時 2026-06-14 03:10:55
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
WA  
実行時間 -
コード長 1,409 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 301 ms
コンパイル使用メモリ 84,864 KB
実行使用メモリ 130,560 KB
最終ジャッジ日時 2026-06-14 03:11:07
合計ジャッジ時間 5,916 ms
ジャッジサーバーID
(参考情報)
judge2_1 / judge1_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 19 WA * 6
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sys
input = sys.stdin.readline

H,W=list(map(int,input().split()))

flag=0
if H<W:
    flag=1
    H,W=W,H

a=H*W
P=[]

for i in range(2,H*W+1):
    if a%i==0:
        P.append(i)
        while a%i==0:
            a//=i

P.sort(reverse=True)

A=list(range(1,H*W+1))
LIST=[]
for i in range(len(P)):
    if i+1<len(P):
        x=P[i]
        y=P[i+1]

        LIST1=[]
        LIST2=[]
        B=[]

        for a in A:
            if a%(x*y)==0:
                LIST2.append(a)
            elif a%x==0:
                LIST1.append(a)
            else:
                B.append(a)

        A=B
        LIST.append(LIST1)
        LIST.append(LIST2)
    else:
        x=P[i]
        LIST1=[]
        B=[]
        for a in A:
            if a%x==0:
                LIST1.append(a)
            else:
                B.append(a)
        LIST.append(LIST1)
        A=B

ANS=[[0]*W for i in range(H)]

height=0
for L in LIST:
    w=0
    for x in L:
        if ANS[height][w]!=0:
            height+=1
        ANS[height][w]=x
        w+=1
        if w==W:
            w=0

ind=0

for i in range(H):
    for j in range(W):
        if ANS[i][j]==0:
            ANS[i][j]=A[ind]
            ind+=1

if flag:
    ANS2=[[0]*H for i in range(W)]

    for i in range(W):
        for j in range(H):
            ANS2[i][j]=ANS[j][i]

    ANS=ANS2

for ans in ANS:
    print(*ans)


    
    

                
        
0