[R66B] 游戏装备
- 难度 入门
- 时限 1s
- 空限 512m
- 模拟
数据规模:,。
思路
用变量维护当前战斗力(始终保持在模 意义下):A 类型装备做加法后取模,B 类型装备做乘法后取模。每件装备处理完输出一次。
复杂度:时间 ,空间 。
仓颉实现
import std.env.*
import std.convert.*
main(): Int64 {
let reader = getStdIn()
let n = Int64.parse(reader.readln().getOrThrow())
var cur: Int64 = 0
for (i in 0..n) {
let line = reader.readln().getOrThrow().split(" ", removeEmpty: true)
let x = Int64.parse(line[1])
if (line[0] == "A") {
cur = (cur + x) % 998244353
} else {
cur = (cur * x) % 998244353
}
println(cur)
}
return 0
}
要点:
- 每步都取模,中间值始终小于模数,
Int64乘法不会溢出( 在Int64范围内)。 - 类型字符按整行
split后取第一个元素与"A"比较,B类型走 else 分支。