結果
| 問題 |
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;
}