#19265. 时空旅行者的怀表
时空旅行者的怀表
出一个习题,计算时钟上经过N小时候是几点,注意N可能为负。
太棒了,这正是巩固“负数取模”知识点的绝佳场景!
时钟其实就是最常见的循环数组,只不过它的长度 固定为 24(如果是24小时制)。
这道题作为“循环数组”专题的签到题,既贴近生活,又能直接考察公式 ((a + b) % n + n) % n 的运用。
习题:时空旅行者的怀表
【题目描述】
小明是一名时空旅行者,他有一块显示 24小时制( 点)的魔法怀表。 现在怀表上显示的时间是 点()。 小明进行了一次时空跳跃,跳跃的跨度是 小时。
- 如果 ,表示向未来跳跃了 小时。
- 如果 ,表示向过去跳跃了 小时(也就是时光倒流)。
请你计算跳跃结束后,怀表上显示的时刻是多少?
【输入格式】
输入一行,包含两个整数 和 。
- 表示当前时刻 ()。
- 表示跳跃的小时数 ()。
【输出格式】
输出一个整数,表示跳跃结束后的时刻(范围在 之间)。
【样例 1】
输入
23 2
输出
1
解释:23点过2小时是第二天的凌晨1点。
【样例 2】
输入
2 -5
输出
21
解释:凌晨2点时光倒流5小时。 2点 1点 0点 23点 22点 21点。
【样例 3】
输入
10 -26
输出
8
解释:时光倒流26小时。也就是倒流一天(24小时)零2小时。 10点倒退24小时还是10点,再倒退2小时是8点。
【教练的思路解析】
同学们,这道题千万不要用 if 判断或者 while 循环去加减!
因为题目中 的范围高达 (十亿)。
- 如果你用
while(h < 0) h += 24;,当时光倒流 小时,你的程序会超时(TLE)。
我们要相信数学的力量! 把时钟看作一个长度为 24 的循环数组。 当前下标是 ,移动步数是 。 直接套用我们的万能公式: