結果
問題 |
No.217 魔方陣を作ろう
|
ユーザー |
![]() |
提出日時 | 2015-05-27 01:54:08 |
言語 | Python2 (2.7.18) |
結果 |
AC
|
実行時間 | 9 ms / 5,000 ms |
コード長 | 2,471 bytes |
コンパイル時間 | 81 ms |
コンパイル使用メモリ | 7,168 KB |
実行使用メモリ | 6,272 KB |
最終ジャッジ日時 | 2024-07-06 10:33:29 |
合計ジャッジ時間 | 1,096 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 18 |
ソースコード
N=int(raw_input()) sq=[[0 for i in range(N)] for j in range(N)] if N%2==1: x=0 y=N/2 cur=1 while cur <= N*N: if sq[x][y]==0: sq[x][y]=cur cur+=1 else: x+=2 y-=1 if y<0: y=N-1 if x>=N: x-=N sq[x][y]=cur cur+=1 x-=1 y+=1 if x<0: x=N-1 if y>=N: y=0 elif N%4==0: cur=1 for x in range(N): for y in range(N): a,b=x%4,y%4 if a==b or a+b==3: sq[x][y]=cur cur+=1 cur=1 for x in range(N-1,-1,-1): for y in range(N-1,-1,-1): if sq[x][y]==0: sq[x][y]=cur cur+=1 else: sq2=[[0 for i in range(N/2)] for j in range(N/2)] n=N/2 x=0 y=n/2 cur=1 while cur <= n*n: if sq2[x][y]==0: sq2[x][y]=cur cur+=1 else: x+=2 y-=1 if y<0: y=n-1 if x>=n: x-=n sq2[x][y]=cur cur+=1 x-=1 y+=1 if x<0: x=n-1 if y>=n: y=0 for i in range(n): for j in range(n): sq2[i][j]=4*(sq2[i][j]-1) for x in range(n): for y in range(n): if x == n/2 and y==n/2: sq[2*x][2*y]=sq2[x][y]+1 sq[2*x+1][2*y]=sq2[x][y]+2 sq[2*x][2*y+1]=sq2[x][y]+4 sq[2*x+1][2*y+1]=sq2[x][y]+3 elif x== n/2+1 and y==n/2: sq[2*x][2*y]=sq2[x][y]+4 sq[2*x+1][2*y]=sq2[x][y]+2 sq[2*x][2*y+1]=sq2[x][y]+1 sq[2*x+1][2*y+1]=sq2[x][y]+3 elif x<=n/2: sq[2*x][2*y]=sq2[x][y]+4 sq[2*x+1][2*y]=sq2[x][y]+2 sq[2*x][2*y+1]=sq2[x][y]+1 sq[2*x+1][2*y+1]=sq2[x][y]+3 elif x==n/2+1: sq[2*x][2*y]=sq2[x][y]+1 sq[2*x+1][2*y]=sq2[x][y]+2 sq[2*x][2*y+1]=sq2[x][y]+4 sq[2*x+1][2*y+1]=sq2[x][y]+3 else: sq[2*x][2*y]=sq2[x][y]+1 sq[2*x+1][2*y]=sq2[x][y]+3 sq[2*x][2*y+1]=sq2[x][y]+4 sq[2*x+1][2*y+1]=sq2[x][y]+2 for i in range(N): for j in range(N): print sq[i][j], print