1. 程式人生 > >【Java演算法】一天24小時中,時針和分針一共重合多少次?

【Java演算法】一天24小時中,時針和分針一共重合多少次?

思路:利用時針與分針的夾角來計算。參考:上一篇文章

因為電子鐘錶,錶針的跳動不是連續的,譬如分鐘每次跳動6度,時針每次跳動0.5度。而編寫程式時變數h小時,m分鐘每次增量為1,所以我們設夾角gap為(-6~6之間)。這樣帶來另一個問題,一次重合接近和重合分開甚至是完全重合,最多可能出現3次夾角小於gap值。下面是Java實現程式碼。

package XiaoMi;

import java.util.Scanner;

public class test8 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// TODO Auto-generated method stub
		/*Scanner scan = new Scanner(System.in);
		String str = scan.nextLine();
		String s[] = str.split(":");
		int h, m;
		h = Integer.valueOf(s[0]);
		m = Integer.valueOf(s[1]);
		double gap = (30 * h - 5.5 * m) % 360;
		System.out.println("時針與分針的夾角為:" + gap);*/
		int count =0;
		for(int h=0; h<24; h++){
			for(int m=0; m<60; m++){
				double gap = (30 * h - 5.5 * m) % 360;
				if(-6.0 < gap && gap < 6.0){
				//if(-3.5 < gap && gap < 3.5){
					System.out.println(h + ":" + m);
					count++;
				}
			}
		}
		System.out.println("共重合:" + count +"次");
	}

}
執行結果:
0:0
0:1
1:5
1:6
2:10
2:11
3:16
3:17
4:21
4:22
5:27
5:28
6:32
6:33
7:38
7:39
8:43
8:44
9:49
9:50
10:54
10:55
11:59
12:0
13:5
14:10
15:16
16:21
17:27
18:32
19:38
20:43
21:49
22:54
23:59
共重合:35次
進一步分析結果,0點~10點階段總計算兩次接近重合,實際上為重合的接近與離開,故(-11);0:0與23:59也為同樣情況,故(-1);11:59與12:0也為同樣情況,故(-1)。那麼一共重合次數為:22次

接下來換個思路來講:

由於時針1分鐘旋轉的圓心角度數為0.5度,分針1分鐘旋轉的圓心角度為6度,當兩針第一次重合時後到第二次重合,分針比時針多旋轉過的圓心角度數為360度,所以兩針再次重合需要的時間為: 

  t=65+5/11 分,    

 這類問題實際上是分針追時針的追擊問題,它的公式是:    t= s/(v1-v2) ,S=60(格),分針速度:V1=1 格/分,時針速度:V2= 1/12 格/分,所以,計算得到t=65+5/11 分,

     根據以上計算,每隔65+5/11 分時針和分針重合一次。     即,從12點開始,每經過65+5/11 分,時針與分針重合一次,    全天共重合 22次 。      一晝夜有24×60=1,440(分),所以兩針一晝夜重合22(次)。

 重合次數=1440/(65+5/11)=22次  

 分述如下:   

1:(05+5/11)分→ 

 2:(10+10/11)分→  

3:(16+4/11)分→ 

 4:(21+9/11)分→ 

5:(27+3/11)分→ 

 6:(32+8/11)分→  

7:(38+2/11)分→  

8:(43+7/11)分→  

9:(49+1/11)分→  

10:(54+6/11)分→  

12:00分   可見,12個小時只重合了11次!

→   一天24小時,但是從下午開始到24點又重複了上午12小時的運轉,所以下午也是和早上的12小時一樣!

所以,11乘以2=22(次)。

能夠發現在上面程式輸出中,每次重合都比上次晚了65+5/11 分,即一小時零5分鐘。如

1:5
2:10
3:16
驗證了程式的正確性。