結果
問題 | No.217 魔方陣を作ろう |
ユーザー | kotatsugame |
提出日時 | 2020-03-06 12:23:49 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 1,275 bytes |
コンパイル時間 | 564 ms |
コンパイル使用メモリ | 65,536 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-14 02:42:49 |
合計ジャッジ時間 | 1,296 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 2 ms
5,248 KB |
testcase_02 | AC | 2 ms
5,248 KB |
testcase_03 | AC | 2 ms
5,248 KB |
testcase_04 | AC | 2 ms
5,248 KB |
testcase_05 | AC | 2 ms
5,248 KB |
testcase_06 | AC | 2 ms
5,248 KB |
testcase_07 | AC | 2 ms
5,248 KB |
testcase_08 | AC | 2 ms
5,248 KB |
testcase_09 | AC | 2 ms
5,248 KB |
testcase_10 | AC | 2 ms
5,248 KB |
testcase_11 | AC | 1 ms
5,248 KB |
testcase_12 | AC | 2 ms
5,248 KB |
testcase_13 | AC | 2 ms
5,248 KB |
testcase_14 | AC | 2 ms
5,248 KB |
testcase_15 | AC | 2 ms
5,248 KB |
testcase_16 | AC | 2 ms
5,248 KB |
testcase_17 | AC | 2 ms
5,248 KB |
コンパイルメッセージ
main.cpp:4:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type] 4 | main() | ^~~~
ソースコード
#include<iostream> using namespace std; int N,A[20][20],B[9][9]; main() { cin>>N; if(N%2==1) { int x=1,y=N/2-1; for(int i=1;i<=N*N;i++) { x=(x+N-1)%N; y=(y+1)%N; if(A[x][y]) { x=(x+2)%N; y=(y+N-1)%N; } A[x][y]=i; } } else if(N%4==0) { for(int i=0;i<N;i++)for(int j=0;j<N;j++) { if(i%4==0||i%4==3?j%4==0||j%4==3:j%4==1||j%4==2)A[i][j]=i*N+j+1; } for(int i=0;i<N;i++)for(int j=0;j<N;j++) { if(!A[i][j])A[i][j]=N*N-i*N-j; } } else { int n=N/2; int x=1,y=n/2-1; for(int i=1;i<=n*n;i++) { x=(x+n-1)%n; y=(y+1)%n; if(B[x][y]) { x=(x+2)%n; y=(y+n-1)%n; } B[x][y]=i; } for(int i=0;i<n;i++)for(int j=0;j<n;j++) { B[i][j]=B[i][j]*4-4; if(i<n/2||i==n/2&&j!=n/2||i==n/2+1&&j==n/2) { A[i*2][j*2]=B[i][j]+4; A[i*2][j*2+1]=B[i][j]+1; A[i*2+1][j*2]=B[i][j]+2; A[i*2+1][j*2+1]=B[i][j]+3; } else if(i>n/2+1) { A[i*2][j*2]=B[i][j]+1; A[i*2][j*2+1]=B[i][j]+4; A[i*2+1][j*2]=B[i][j]+3; A[i*2+1][j*2+1]=B[i][j]+2; } else { A[i*2][j*2]=B[i][j]+1; A[i*2][j*2+1]=B[i][j]+4; A[i*2+1][j*2]=B[i][j]+2; A[i*2+1][j*2+1]=B[i][j]+3; } } } for(int i=0;i<N;i++) { for(int j=0;j<N;j++)cout<<A[i][j]<<(j+1==N?"\n":" "); } }