#26492. 时间问题

时间问题

题目描述

小航的闹钟会记录初始时间和经过的秒数,请编写程序,输入一个24小时制的初始时间(时、分、秒)和一个正整数表示经过的秒数,计算并输出闹钟最终的时间(时、分、秒),同时输出最终时间为当天的第几秒,最终时间仍遵循24小时制规则。

补充条件:保证经过n秒后,时间不会到第二天(即初始时间加上n秒的总时长仍在当天00:00:00 ~ 23:59:59范围内)。

输入格式

输入一行四个非负整数,依次表示初始时间的小时h、分钟m、秒s和经过的秒数n(保证输入的初始时间合法,且初始时间加n秒不会跨天)。

  • 0h230 \le h \le 23
  • 0m590 \le m \le 59
  • 0s590 \le s \le 59
  • 1n10001 \le n \le 1000

输出格式

第一行,三个由空格分隔的非负整数,依次表示最终时间的小时、分钟、秒; 第二行,一个非负整数,表示最终时间为当天的第几秒。

10 20 30 150
10 23 0
37380
23 59 50 9
23 59 59
86399
15 40 25 999
15 57 4
57424

提示

  • 1000秒 = 16分40秒,远小于1小时(3600秒),结合“初始时间加n秒不跨天”的补充条件,可确保计算无需处理跨天逻辑;
  • 核心解题思路:①初始时间转总秒数 → 加经过秒数(无需取模86400) → 逆向转换回时、分、秒;②当天秒数为最终总秒数;
  • 核心公式:
    • 1小时=3600秒,1分钟=60秒,1天总秒数=86400(24×3600);
    • 初始总秒数 = h×3600+m×60+sh \times 3600 + m \times 60 + s
    • 最终总秒数 = 初始总秒数 + n;
    • 最终小时 = 最终总秒数 / 3600(整数除法);
    • 剩余秒数 = 最终总秒数 % 3600;
    • 最终分钟 = 剩余秒数 / 60(整数除法);
    • 最终秒数 = 剩余秒数 % 60;
    • 当天秒数 = 最终总秒数(即最终h×3600 + 最终m×60 + 最终s)。