關於時針和分鐘重合次數的計算

在網上看到一道這樣的題目。

在一天的24小時之中,時鐘的時針、分針和秒針完全重合在一起的時候有幾次?都分別是什麼時間?你怎樣算出來的?

/*
1、一天是86400秒,錶盤是半天一個週期,則只需要計算半天時間爲43200秒 
2、分針和時針重合,即分針和時針的角度是一樣。
3、秒針走一秒,分針走360°/60 = 6°,時針走360°/43200
4、中午12點,則算是重回原點。
*/
declare @num int
select @num = 0
while @num <= 43200  /*循環次數,秒針走的次數*/
begin
    if(convert(numeric(18,3),360.0/43200*case when @num = 43200 then 0 else @num end) = convert(numeric(18,3),((@num*1.00/60)%60)*6) )  /*計算秒鐘每走一秒,則時針和分鐘相應的走的角度*/
	begin
	    print '當前秒數:'+cast(@Num as char(6)) + '時針和分針重合,時間是 ' + cast(@Num as char(6)) + '  '
		                                                       + left('00',2-len(@Num/3600))+cast(@Num/3600 as varchar(3)) + ':' /*重合時間時,時針*/
		                                                       + left('00',2-len((@Num/60)%60))+cast(((@Num/60)%60) as varchar(3)) + ':' /*重合時間時,分針*/
															   + left('00',2-len(@Num%60))+cast((@Num%60) as varchar(4)) /*重合時間時,秒針*/
	end
    --print cast(@Num as char(6)) + '   時針: ' + cast(convert(numeric(18,2),360.0/43200*@Num) as varchar(50)) + '      分針:'+cast(convert(numeric(18,2),((@num*1.00/60)%60)*6) as varchar(50))
    select @Num = @Num + 1
end

結果如下:

當前秒數:0     時針和分針重合,時間是 0       00:00:00
當前秒數:43200 時針和分針重合,時間是 43200   12:00:00

因此在一天24小時中,最開始走計算一次,中午12點計算一次,凌晨12點也是0點再次計算一次,則算三次

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章