問題:24小時內時針和秒針重合幾次
分析:此題看似有點嚇人,但若想到一點,就可秒殺此題。首先,要明白什麼是時針和秒針重合,因為秒針走一秒是鐘表中的一格,而時針可以看成是連續的轉動,此處重合就要理解為在秒針停下的那一刻重合。想到這點,再看時針若想和秒針重合,必須走到一格時,秒針剛好走到這一格。已知一格有12分鐘,時針走到每格時,必是整分鐘,也即秒針必定在12點的位置。那麼兩者若想重合,只有在兩者同時到達12點處。24小時內,滿足的時刻只有:0時,12時,24時。所以一天內只能重合3次。也就是說,雖然每一秒兩者都會擦肩,但一天內真正相遇也就那麼僅有的三次。
驗證:時針每走一格走過6度,秒針走過12(m)*60(s)*6度,兩者重合即為對360取模後兩者相等。
[cpp]
void Solve() {
const int GRIDS = 24 * 5; // 24 hours; 5 grids per hour;
const int DEGREE = 360;
const int SECOND_OF_MINUTE = 60;
const int DEGREE_OF_GRID = 6;
const int SECOND_OF_GRID = 12 * SECOND_OF_MINUTE;
int count = 0;
for (int i = 0; i <= GRIDS; ++ i) {
int dh = (DEGREE_OF_GRID * i) % DEGREE;
int ds = (DEGREE_OF_GRID * i * SECOND_OF_GRID) % DEGREE;
if (dh == ds) ++ count;
}
printf("%d\n", count);
}
PS:趨勢科技,筆試,2013,選擇