#agc030c. [agc030_c]Coloring Torus

[agc030_c]Coloring Torus

问题描述

对于一个n×nn \times n的方格网格,记作(r,c)(r, c)表示从上往下数第(r+1)(r+1)行,从左往右数第(c+1)(c+1)列的方块。使用KK种颜色对这个网格进行_良好着色_,需要满足以下条件:

  • 每个方块只用其中一种颜色进行着色。
  • 使用了全部的KK种颜色。
  • 设我们将这KK种颜色编号为1,2,...,K1, 2, ..., K。对于任意颜色iijj(1iK,1jK1 \leq i \leq K, 1 \leq j \leq K),颜色ii中的每个方块与颜色jj中的相邻方块数量相等。这里,与方块(r,c)(r, c)相邻的方块有$((r-1) \; mod \; n, c), ((r+1) \; mod \; n, c), (r, (c-1) \; mod \; n)$和(r,(c+1)  mod  n)(r, (c+1) \; mod \; n)(如果这四个方块中有重复的方块,重复的次数也要计数)。

给定KK,自由选择**满足1n5001 \leq n \leq 500**的nn,并构造一个n×nn \times n的网格,使其能够良好着色。可以证明,在此问题的约束条件下,总能实现该目标。

约束条件

  • 1K10001 \leq K \leq 1000

输入

从标准输入读入数据,输入格式如下:

KK

输出

输出格式如下:

nn c0,0c_{0,0} c0,1c_{0,1} ...... c0,n1c_{0,n-1} c1,0c_{1,0} c1,1c_{1,1} ...... c1,n1c_{1,n-1} :: cn1,0c_{n-1,0} cn1,1c_{n-1,1} ...... cn1,n1c_{n-1,n-1}

这里nn表示网格的大小,满足1n5001 \leq n \leq 500cr,cc_{r,c}是一个整数,满足1cr,cK1 \leq c_{r,c} \leq K,表示方块(r,c)(r, c)的颜色。

样例输入 1

2

样例输出 1

3
1 1 1
1 1 1
2 2 2
  • 颜色11中的每个方块有三个相邻方块是颜色11,一个相邻方块是颜色22
  • 颜色22中的每个方块有两个相邻方块是颜色11,两个相邻方块是颜色22

以下形式的输出将被判定为不正确:

2
1 2
2 2

样例输入 2

9

样例输出 2

3
1 2 3
4 5 6
7 8 9