当前位置: 首页 > news >正文

有趣的算法题:有时针分针秒针的钟表上,一天之内,时针和分针可重合多少次?分别在什么时刻重合?

原题:在一个有时针,分针和秒针的钟表上,一天之内,时针和分针可以重合多少次?分别在什么时刻重合?

  • 明确概念
    秒针角度(每秒 6 度)
    分针角度(每分钟 6 度 + 每秒 0.1 度)
    时针角度(每小时 30 度 + 每分钟 0.5 度 + 每秒 0.5 / 60 度)
    根据这个公式,列出二元一次方程,解它即可
  • 为啥这样
    360/60秒=6度,1分钟走6度,则60s走6度,1秒走0.1度
    360/12小时=30度,1小时走30度,则60分钟走30度,1分钟走0.5度,1秒钟走0.5/60度
  • 答案
    在 12 小时内,时针和分针会重合 11 次,大约分别在:12:00, 1:05, 2:10, 3:15, 4:20, 5:25, 6:30, 7:35, 8:40, 9:45, 10:50,并不是完全精确
    因为时针和分针不是每小时整点重合,而是会在每小时稍后的某个具体分钟数重合一次。
    一天是 24 小时,所以总共是:
    11 × 2 = 22 次重合

扩展:时针、分针、秒针可以重合多少次?分别在什么时刻重合

同理,列三元一次方程。
只需在上一个问题答案的基础上,带入答案验证即可

  • 答案:只有00:00:00和12:00:00两个满足

代码实现

//时分重合
function getOverlapTimes() {const times = [];// 12 小时周期,重复两次(AM 和 PM)for (let h = 0; h < 12; h++) {// 重合的分钟数const totalMinutes = (60 / 11) * h;//二元一次方程列出来 带入hconst minutes = Math.floor(totalMinutes);//得到分钟,只能是整数,必有误差const seconds = Math.round((totalMinutes - minutes) * 60);//根据误差得到秒数// 转成字符串时间格式const formatTime = (hourOffset) => {const hour = (h + hourOffset) % 24;const hh = hour.toString().padStart(2, '0');//补全const mm = minutes.toString().padStart(2, '0');const ss = seconds.toString().padStart(2, '0');return `${hh}:${mm}:${ss}`;};// 添加 AM 和 PM 两组时间times.push(formatTime(0));   // AMtimes.push(formatTime(12));  // PM}return times;
}console.log(getOverlapTimes());
/*
["00:00:00", "12:00:00","01:05:27", "13:05:27","02:10:55", "14:10:55","03:16:21", "15:16:21","04:21:49", "16:21:49","05:27:16", "17:27:16","06:32:43", "18:32:43","07:38:10", "19:38:10","08:43:38", "20:43:38","09:49:05", "21:49:05","10:54:32", "22:54:32","11:59:59", "23:59:59"
]*///三针重合
for (let h = 0; h < 12; h++) {for (let m = 0; m < 60; m++) {for (let s = 0; s < 60; s++) {const secondDeg = s * 6;const minuteDeg = m * 6 + s * 0.1;const hourDeg = h * 30 + m * 0.5 + s * (0.5 / 60);if (Math.abs(secondDeg - minuteDeg) < 0.0001 &&Math.abs(minuteDeg - hourDeg) < 0.0001) {console.log(`${String(h).padStart(2, '0')}:${String(m).padStart(2, '0')}:${String(s).padStart(2, '0')}`);}}}
}
/*
00:00:00
12:00:00
*/
http://www.dtcms.com/a/287832.html

相关文章:

  • 【Python】Pandas
  • rustdesk客户端编译
  • QT窗口(7)-QColorDiag
  • 根据ARM手册,分析ARM架构中,原子操作的软硬件实现的底层原理
  • tailscale在ubuntu22.04上使用
  • Unity物理响应函数与触发器
  • LVS详解
  • GitHub 趋势日报 (2025年07月18日)
  • 【图像处理基石】什么是小波变换?
  • CAN总线负载率计算及示例说明
  • 【CVPR2025】计算机视觉|RORem:让物体移除“脱胎换骨”!
  • Streamlit 官翻 2 - 开发指南 Develop Concepts
  • 昇思+香橙派 AI 开发实践:DeepSeek 全流程指南(基于 openEuler)
  • lesson18:Python函数的闭包与装饰器(难)
  • TypeScript 泛型详解:从基础到实战应用
  • 3.条件判断:让程序学会做选择
  • Web开发 03
  • import.meta.glob 与 import.meta.env、import的几个概念的简单回顾
  • react+antd+表格拖拽排序以及上移、下移、移到顶部、移到底部
  • 408数据结构强化(自用)
  • 实现el-select下拉框,下拉时加载数据
  • MYSQL 第一次作业
  • 《命令行参数与环境变量:从使用到原理的全方位解析》
  • Flink实时流量统计:基于窗口函数与Redis Sink的每小时PV监控系统(学习记录)
  • UniApp 自定义导航栏:解决安全区域适配问题的完整实践
  • C++基于muduo库从零实现Rpc框架
  • Ubuntu18.04环境下,vscode使用clangd、bear实时准确跳转过程中遇到的compile_commands.json无法解析问题
  • windows wsl ubuntu 如何安装 maven
  • 程序混淆的可行性?
  • PyCharm 入门指南:起步学习、开发环境一体