B4000 [GESP202406 一级] 休息时间

· · 题解

欢迎报名洛谷网校,报名课程可以获得对应组别的知识点讲解与答疑服务,期待和大家一起进步!点击图片即可报名。

:::align{center} :::

如果逐一处理秒、分钟、小时的变化,虽然可以完成本题,但是较为繁琐。这里介绍一种无需条件判断和循环语句的简单的做法:

首先,将开始学习的时刻时 hms 用数学式子转化到这是这一天的第 t 秒。根据 1 分钟是 60 秒,一小时是 60 分钟。然后,小杨学习了 k 秒,直接加到 t 上,因此可以写出这段代码:

int t = h * 3600 + m * 60 + s + k;

接着,将 t 转化为时分秒的形式,可以得出(这里的 \div 都是下取整的除法):

即可得到本题答案。