【Java算法】一天24小时中,时针和分针一共重合多少次?
思路:利用時(shí)針與分針的夾角來(lái)計(jì)算。參考:上一篇文章
因?yàn)殡娮隅姳?#xff0c;表針的跳動(dòng)不是連續(xù)的,譬如分鐘每次跳動(dòng)6度,時(shí)針每次跳動(dòng)0.5度。而編寫程序時(shí)變量h小時(shí),m分鐘每次增量為1,所以我們?cè)O(shè)夾角gap為(-6~6之間)。這樣帶來(lái)另一個(gè)問(wèn)題,一次重合接近和重合分開(kāi)甚至是完全重合,最多可能出現(xiàn)3次夾角小于gap值。下面是Java實(shí)現(xiàn)代碼。
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("時(shí)針與分針的夾角為:" + 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 +"次");}} 運(yùn)行結(jié)果: 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次 進(jìn)一步分析結(jié)果,0點(diǎn)~10點(diǎn)階段總計(jì)算兩次接近重合,實(shí)際上為重合的接近與離開(kāi),故(-11);0:0與23:59也為同樣情況,故(-1);11:59與12:0也為同樣情況,故(-1)。 那么一共重合次數(shù)為:22次接下來(lái)?yè)Q個(gè)思路來(lái)講:
由于時(shí)針1分鐘旋轉(zhuǎn)的圓心角度數(shù)為0.5度,分針1分鐘旋轉(zhuǎn)的圓心角度為6度,當(dāng)兩針第一次重合時(shí)后到第二次重合,分針比時(shí)針多旋轉(zhuǎn)過(guò)的圓心角度數(shù)為360度,所以兩針再次重合需要的時(shí)間為:?
? t=65+5/11 分, ? ?
?這類問(wèn)題實(shí)際上是分針追時(shí)針的追擊問(wèn)題,它的公式是: ? ?t= s/(v1-v2) ,S=60(格),分針?biāo)俣?#xff1a;V1=1 格/分,時(shí)針?biāo)俣?#xff1a;V2= 1/12 格/分,所以,計(jì)算得到t=65+5/11 分,
?? ? 根據(jù)以上計(jì)算,每隔65+5/11 分時(shí)針和分針重合一次。 ? ? 即,從12點(diǎn)開(kāi)始,每經(jīng)過(guò)65+5/11 分,時(shí)針與分針重合一次, ? ?全天共重合 22次 。 ? ? ?一晝夜有24×60=1,440(分),所以兩針一晝夜重合22(次)。
?重合次數(shù)=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分 ? 可見(jiàn),12個(gè)小時(shí)只重合了11次!
→ ? 一天24小時(shí),但是從下午開(kāi)始到24點(diǎn)又重復(fù)了上午12小時(shí)的運(yùn)轉(zhuǎn),所以下午也是和早上的12小時(shí)一樣!
所以,11乘以2=22(次)。
能夠發(fā)現(xiàn)在上面程序輸出中,每次重合都比上次晚了65+5/11 分,即一小時(shí)零5分鐘。如
1:5 2:10 3:16 驗(yàn)證了程序的正確性。總結(jié)
以上是生活随笔為你收集整理的【Java算法】一天24小时中,时针和分针一共重合多少次?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【小米面试题】-给定一个具体时间,计算时
- 下一篇: Java中用户向系统传递参数的三种基本方