题描述:时分秒针一天中能重合几次?
看一些
搜索引擎上,对该问题的解法大都是一天只有两次重合,即0点和12点。而我的解法则不同,不是说别人的解法不对,我倒觉得这题从另一个角度考虑更有趣,以下是分析过程。
前提:钟表一周有60格,时针每12分钟移动一格,分针每1分钟移动一格,秒针每1秒钟移动一格,其他种类的不算。
分析:
1、1小时内,时针和分针只会重合一次,因为分针会移动一周,而时针只会移动5格,期间两指针能且只能重合一次。
2、因为时针每12分钟才移动一格,所以每次移动后,会有11分59秒的时间来等待分针来汇合;同样,分针每60秒移动一格,每次移动后,会有59秒的时间来等待秒针来汇合。
3、地球人都知道(一定要东北口音)一天有24小时,但每小时,时针超前分针的格数不同,1点超前5格,2点超前10格,……。
问题出来了,以每个整点为起点,需要计算时针需要移动多少格(分钟)才能与时针重合?
列方程:X=S+X/12
其中:X:分针需要移动的格数(分钟);S:时针超前分针的格数;注意X/12一定是整除,不需要小数。
解得:X=12×S/11,这里除法依旧是整除。
知道了需要多久分针能与时针汇合,剩下秒针就好办了,分针不动,静静的等待秒针X秒就OK了。
4、解法:循环24(0~23)小时,计算出每个整点,时针超前分针多少格数,然后计算与时针汇合后的需要的分钟数,再加上同样数目的秒数,一切都好了!
以下是Ruby的一段解法脚本,供朋友们参考,简单的很:
(0..23).each do |item|
s = (item % 12) * 5
x = 12 * s / 11
#此处要注意,我们每次等待的时间有限,不能超过1小时
next if x >= 60
puts item.to_s + ":" + x.to_s + ":" + x.to_s
end
最终答案(共计22个时刻):
0:0:0
1:5:5
2:10:10
3:16:16
4:21:21
5:27:27
6:32:32
7:38:38
8:43:43
9:49:49
10:54:54
12:0:0
13:5:5
14:10:10
15:16:16
16:21:21
17:27:27
18:32:32
19:38:38
20:43:43
21:49:49
22:54:54
闭门造的车开出来了,大家看看吧!