[R10C] 多重回字

  • 难度 普及-
  • 时限 1s
  • 空限 512m
  • 模拟

数据规模:3n19993 \le n \le 1999nn 为奇数。

思路

格子 (x,y)(x, y) 所在的层数为它到四条边距离的最小值 d=min(x,y,n1x,n1y)d = \min(x, y, n-1-x, n-1-y),第 dd 层(从外到内,00 开始)是 # 当且仅当 dd 为偶数。逐行逐列判断后输出即可。

复杂度:时间 O(n2)O(n^2),空间 O(1)O(1)

仓颉实现

import std.convert.*
import std.env.*

main() {
    let reader = getStdIn()
    let n = Int64.parse(reader.readln().getOrThrow())
    for (x in 0..n) {
        for (y in 0..n) {
            var d = x
            if (y < d) {
                d = y
            }
            if (n - 1 - x < d) {
                d = n - 1 - x
            }
            if (n - 1 - y < d) {
                d = n - 1 - y
            }
            if (d % 2 == 0) {
                print("#")
            } else {
                print(" ")
            }
        }
        println()
    }
}