[R76B] 还是串移位
数据规模:,, 仅由
#与.组成。
思路
圆环上共有 个起点,每个起点对应一段 个连续格子。直接枚举全部 个起点,对每个起点统计窗口内 # 的个数,再与 比较即可。
因为是圆环,起点 取到的第 个格子( 从 开始计数)在原串中的下标是 。
样例中 、、,三个起点分别取到 #.#、.##、##.,各含 个黑格,其余起点只含 个,故答案为 。
复杂度
时间 ,空间 。
仓颉实现
查看仓颉实现
import std.env.*
import std.convert.*
main() {
let reader = getStdIn()
let nums = reader.readln().getOrThrow().split(" ", removeEmpty: true).map({ p: String => Int64.parse(p) })
let n = nums[0]
let k = nums[1]
let x = nums[2]
let s = reader.readln().getOrThrow().toRuneArray()
var ans = 0
var i = 0
while (i < n) {
var cnt = 0
var j = 0
while (j < k) {
if (s[(i + j) % n] == r'#') {
cnt += 1
}
j += 1
}
if (cnt == x) {
ans += 1
}
i += 1
}
println(ans)
}