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: