クロスダイアモンド

2 secs 1024 MB
wisteriahuman's icon wisteriahuman

解説

この問題では、与えられた整数 NN に基づいて、 2N12N - 12N12N - 1 列のグリッドを作成し、 特定の条件に従って黒または白でマスを塗り分ける必要があります。

グリッドの中央に注目すると、中央のマスの座標は (N,N)(N, N) です。
あるマスの座標 (i,j)  (1i,j2N1)(i, j) \; (1 \le i, j \le 2N - 1) において、中央のマスの座標は (N,N)(N, N) からの距離 DD を考えると、距離 DD は以下のように計算できます。
D=iN+jND = |i - N| + |j - N|
これは、マンハッタン距離として知られています。

マス (i,j)(i, j) が黒く塗られる条件は次の 22 つです。

  • (iN+jN=N1)(|i - N| + |j - N| = N - 1) の場合。これは、中心からの距離がちょうど N1N - 1 であるマスです。この場合、ひし形で黒が配置されます。
  • (iN+jN>N1 かつ iN=jN)(|i - N| + |j - N| > N - 1 \text{ かつ } |i - N| = |j - N|) の場合。これは、中心の対角線上に黒が並ぶ条件です。

上記の条件を満たさないマスはすべて白で塗られます。

解答例

解答例(C)

解答例(C++)

解答例(Python)