图 1:本文封面,三组角速度与四个答案一览。
先说明属性:这是一篇经典题解析,题目出自本地历史面试资料整理,与任何公司的当前招聘无关。钟表重合题看着像脑筋急转弯,真正考的是你能不能把它翻译成相对速度的追及模型——会建模的人眼里,这题就是三道除法加一处边界判断。
追及模型:快针每多转一整圈,就重合一次。
先把三根针的角速度摆出来:时针一圈 12 小时,即 0.5°/分钟;分针一圈 1 小时,即 6°/分钟;秒针一圈 1 分钟,即 360°/分钟。两针重合的本质是追及:快针相对慢针的角速度 v = v快 − v慢,每相对多转过 360° 就重合一次,重合周期 T = 360° ÷ v。24 小时共 1440 分钟,重合次数 = 1440 ÷ T = v × 1440 ÷ 360——也就是快针比慢针多转的整圈数。模型建好,剩下全是代入:
- 分针追时针:相对速度 5.5°/分钟,5.5 × 1440 ÷ 360 = 22 次;
- 秒针追分针:相对速度 354°/分钟,354 × 1440 ÷ 360 = 1416 次;
- 秒针追时针:相对速度 359.5°/分钟,359.5 × 1440 ÷ 360 = 1438 次。
三个数恰好都是整数,这不是巧合:24 小时结束时三根针都回到 12 点,套圈数必然取整。
这里有个值得停下来检查的直觉:秒针一分钟转一圈,有人会觉得秒针和分针每分钟都重合一次,24 小时该有 1440 次。错在忽略了分针自己也在走——秒针转完一圈回到原位时,分针已经向前挪了 6°,秒针得多追这 6° 才能再次遇上,追及周期因此是 60/59 分钟而不是 1 分钟,每小时少追上约一次,全天 1440 × 59/60 = 1416 次。「慢针不是静止的」正是相对速度要取差值的原因,也是面试官顺着追问的第一个点。
三针同框为什么只有 2 次。
三针重合,必先满足分针追上时针。12 小时内分针与时针重合 11 次,把周期 720/11 分钟(约 65 分 27 秒)逐个累加,可以得到完整的时刻表:0:00、约 1:05:27、约 2:10:55、约 3:16:22、约 4:21:49、约 5:27:16、约 6:32:44、约 7:38:11、约 8:43:38、约 9:49:05、约 10:54:33——两针的位置均匀分布在表盘上,相邻两次间隔完全相同。而秒针每分钟转一整圈,只有当时刻恰好是整分钟数时它才指向 12 点方向。上面 11 个时刻里带小数秒的统统出局,只有 0:00(即 12:00)满足三针同位置。所以 12 小时内三针同框仅一次,24 小时共 2 次:0:00 与 12:00。
边界陷阱:0 点与 24 点是同一刻。
表盘 12 小时转一整圈、首尾相接,0:00 与 24:00 是同一瞬间,只能计一次。被问「12 小时分针时针重合几次」,答 12 就掉坑了——把首尾各算一遍,正确答案是 11;同理 24 小时是 22 而不是 23。把首尾重复计数,是这类题最常见的「多数一次」错误。
用代码把推导验一遍。
口算容易心虚,写个小脚本做交叉验证(Node.js 22.15.0,node clock.js):套圈数直接按相对速度算,三针重合则枚举分-时重合时刻、检查秒针是否同位置:
function coincidences(vFast, vSlow, totalMinutes) {
return (vFast - vSlow) * totalMinutes / 360; // 套圈数 = 重合次数
}
console.log(`分针追上时针 ${coincidences(6, 0.5, 1440)} 次`);
console.log(`秒针追上分针 ${coincidences(360, 6, 1440)} 次`);
console.log(`秒针追上时针 ${coincidences(360, 0.5, 1440)} 次`);
let triple = 0;
for (let k = 0; k < 22; k++) {
const tMin = k * 720 / 11; // 分-时第 k 次重合
if (Math.abs((0.5 * tMin) % 360 - (360 * tMin) % 360) < 1e-9) triple++;
}
console.log(`三针同框 ${triple} 次`);
实测输出:
分针追上时针 22 次
秒针追上分针 1416 次
秒针追上时针 1438 次
三针同框 2 次
与推导完全一致。
图 2:追及模型、三行推导与边界陷阱。
面试现场的答题结构。
先给模型一句话:「快针每多转一整圈重合一次,次数就是套圈数」,然后报角速度、列三道除法,22、1416、1438 脱口而出。三针重合单独处理:先退到分-时重合的 11 个时刻,再用「秒针只有整点才在 12 点方向」筛到只剩 0:00 与 12:00。收尾主动交代边界:首尾同刻只计一次,12 小时口径是 11 次。答到「把计数问题翻译成相对速度」这一层,面试官要的结构化能力就展示完了。你被问过印象最深的小学奥数式面试题是哪道?当时是怎么建模的?欢迎分享。