結果
問題 | No.223 1マス指定の魔方陣 |
ユーザー |
|
提出日時 | 2017-05-30 11:42:30 |
言語 | D (dmd 2.109.1) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 766 bytes |
コンパイル時間 | 1,440 ms |
コンパイル使用メモリ | 145,720 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-06-12 19:29:54 |
合計ジャッジ時間 | 3,114 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 46 |
ソースコード
import std.algorithm, std.conv, std.range, std.stdio, std.string; void main() { auto rd = readln.split.to!(int[]), n = rd[0], x = rd[1] - 1, y = rd[2] - 1, z = rd[3] - 1; int[][] r; r = calc(n); auto w = r[y][x] ^ z; foreach (ri; r) { ri[] ^= w; ri[] += 1; } foreach (ri; r) writeln(ri.to!(string[]).join(' ')); } auto calc(int n) { auto r = new int[][](n, n); auto isTaikaku(int x, int y) { auto x4 = x % 4, y4 = y % 4; return ((x4 == 0 || x4 == 3) && (y4 == 0 || y4 == 3) || (x4 == 1 || x4 == 2) && (y4 == 1 || y4 == 2)); } foreach (y; 0..n) foreach (x; 0..n) { auto i = x + y * n; if (isTaikaku(x, y)) r[y][x] = i; else r[n-1-y][n-1-x] = i; } return r; }