[R1B] 砖块覆盖

  • 难度 入门
  • 时限 1s
  • 空限 512m
  • 数学

数据规模:1T1001 \le T \le 1001n,m10001 \le n,m \le 1000

思路

每块砖面积为 22,覆盖的总面积必须是偶数,因此 n×mn \times m 为奇数时无解。

n×mn \times m 为偶数时,nnmm 至少有一个是偶数:若 nn 为偶数,把 2×12 \times 1 的砖竖着铺满 nn 行;否则 mm 为偶数,用 1×21 \times 2 的砖横着铺满 mm 列,一定存在覆盖方案。

所以只需要判断 n×mn \times m 的奇偶性。

复杂度:时间 O(T)O(T),空间 O(1)O(1)

仓颉实现

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

let reader = getStdIn()

func solve(): Unit {
    let arr = reader.readln().getOrThrow().split(" ")
    let n = Int64.parse(arr[0])
    let m = Int64.parse(arr[1])
    if ((n * m) % 2 == 0) {
        println("Yes")
    } else {
        println("No")
    }
}

main(): Int64 {
    let t = Int64.parse(reader.readln().getOrThrow())
    for (_ in 1..=t) {
        solve()
    }
    return 0
}

要点:

  • n,m1000n,m \le 1000n×mn \times m 不超过 10610^6,用 Int64 计算不存在溢出。