結果
問題 |
No.217 魔方陣を作ろう
|
ユーザー |
![]() |
提出日時 | 2022-07-05 05:08:40 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 32 ms / 5,000 ms |
コード長 | 2,116 bytes |
コンパイル時間 | 90 ms |
コンパイル使用メモリ | 12,928 KB |
実行使用メモリ | 11,008 KB |
最終ジャッジ日時 | 2024-12-15 04:31:14 |
合計ジャッジ時間 | 1,631 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 18 |
ソースコード
N=int(input()) ANS=[[0]*N for i in range(N)] if N%2==1: i=N//2 j=0 now=1 for t in range(N): for u in range(N): ANS[j][i]=now now+=1 j-=1 i+=1 j%=N i%=N j+=2 i-=1 j%=N i%=N elif N%4==0: for i in range(N): for j in range(N): if i%4==0 or i%4==3: if j%4==0 or j%4==3: ANS[i][j]=i*N+j+1 else: ANS[i][j]=N*N-(i*N+j) else: if j%4==0 or j%4==3: ANS[i][j]=N*N-(i*N+j) else: ANS[i][j]=i*N+j+1 else: K=N//2 ANS2=[[0]*K for i in range(K)] i=K//2 j=0 now=1 for t in range(K): for u in range(K): ANS2[j][i]=now now+=1 j-=1 i+=1 j%=K i%=K j+=2 i-=1 j%=K i%=K for i in range(K): for j in range(K): ANS2[i][j]=(ANS2[i][j]-1)*4 for i in range(K): for j in range(K): if i==K//2 and j==K//2: ANS[i*2][j*2]=ANS2[i][j]+1 ANS[i*2+1][j*2]=ANS2[i][j]+2 ANS[i*2][j*2+1]=ANS2[i][j]+4 ANS[i*2+1][j*2+1]=ANS2[i][j]+3 elif i<=K//2 or (i==K//2+1 and j==K//2): ANS[i*2][j*2]=ANS2[i][j]+4 ANS[i*2+1][j*2]=ANS2[i][j]+2 ANS[i*2][j*2+1]=ANS2[i][j]+1 ANS[i*2+1][j*2+1]=ANS2[i][j]+3 elif i==K//2+1: ANS[i*2][j*2]=ANS2[i][j]+1 ANS[i*2+1][j*2]=ANS2[i][j]+2 ANS[i*2][j*2+1]=ANS2[i][j]+4 ANS[i*2+1][j*2+1]=ANS2[i][j]+3 else: ANS[i*2][j*2]=ANS2[i][j]+1 ANS[i*2+1][j*2]=ANS2[i][j]+3 ANS[i*2][j*2+1]=ANS2[i][j]+4 ANS[i*2+1][j*2+1]=ANS2[i][j]+2 for i in range(N): print(*ANS[i])