[R15A] 现在几点

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

数据规模:0≤x≤230 \le x \le 23,0≤y≤590 \le y \le 59,1≤t≤1061 \le t \le 10^6。

思路

把起始时刻换算成「当天第几分钟」x×60+yx \times 60 + y,加上持续时间 tt 后对 14401440(一天的总分钟数)取模,得到结束时刻的分钟数,再除回去得到时和分。

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

仓颉实现

查看仓颉实现
import std.env.*
import std.convert.*

main() {
    let reader = getStdIn()
    let xyt = reader.readln().getOrThrow().split(" ", removeEmpty: true).map({ p => Int64.parse(p) })
    let total = (xyt[0] * 60 + xyt[1] + xyt[2]) % 1440
    println("${total / 60} ${total % 60}")
}

要点:

  • 跨天的情况由取模统一处理:tt 可达 10610^6 分钟(约 694 天),直接先加后取模即可,不需要模拟每一天。
  • total / 60 与 total % 60 分别是结束时刻的小时和分钟。