Official
B - Nice Grid Editorial by leaf1415
与えられた \(15 \times 15\) のグリッドの情報をソースコード中に埋め込む方法によっても正解することができますが、少し大変です。 グリッドが中央のマス( \(8\) 行目 \(8\) 列目のマス)を中心として対称で規則的な形をしていることを利用すると、以下の通り、より簡潔に解くことができます。
与えられたグリッドでは、中央のマスからの”距離”が奇数のマスは黒、偶数のマスは白になっています。 具体的には、\(R\) 行目 \(C\) 列目のマスが黒色であるのは、そのマスと中央のマスからのチェビシェフ距離(チェス盤距離)
\[\max\lbrace |R-8|, |C-8|\rbrace \tag{1}\]
が奇数のときかつそのときに限ります(ここで、\(|x|\) は \(x\) の絶対値を表します)。 よって、上記 (1) を計算してその偶奇を判定することで、下記の実装例( C++ )のように、この問題を簡潔に解くことができます。
#include <iostream>
using namespace std;
int main(void)
{
int r, c;
cin >> r >> c;
if(max(abs(r-8), abs(c-8)) % 2) cout << "black" << endl;
else cout << "white" << endl;
return 0;
}
posted:
last update: