[R64B] 方形靶
- 难度 入门
- 时限 1s
- 空限 512m
- 模拟
数据规模:,。
思路
按行读入 的得分矩阵,再读入 行 X / . 字符。扫描字符矩阵,凡是 X 的位置就把对应得分累加到答案。
复杂度:时间 ,空间 。
仓颉实现
import std.env.*
import std.convert.*
main(): Int64 {
let reader = getStdIn()
let n = Int64.parse(reader.readln().getOrThrow())
var a = Array<Int64>(n * n, { _ => 0 })
for (i in 0..n) {
let row = reader.readln().getOrThrow().split(" ", removeEmpty: true).map({ p => Int64.parse(p) })
for (j in 0..n) {
a[i * n + j] = row[j]
}
}
var ans: Int64 = 0
for (i in 0..n) {
let s = reader.readln().getOrThrow()
for (j in 0..n) {
if (s[j] == UInt8(0x58)) {
ans = ans + a[i * n + j]
}
}
}
println(ans)
return 0
}
要点:
- 得分矩阵展平成一维数组,下标
i * n + j对应第 行第 列。 X的 ASCII 码是0x58,字符矩阵逐字节判断即可。- 单格得分可达 ,总得分约 ,用
Int64累加。