时分秒针在一天之内重合多少次

前言

分析问题之前先给出问题的答案:2次,送给急需要知道答案又不求甚解的朋友。

这个问题之前听过类似的,一直没有当回事,今天在解题的时候发现了这道题,于是动脑筋想了一下,从12点位置时分秒3个表针重合开始,第一次应该在1点5分之后,那是分针转了一圈快追上时针了,再稍微走一点就能追上,然后秒针再转过来就完成了第一次重合,同理在2点10分之后也有一次,在3点15之后还有一次,这样算下来12小时之内有11次,那么一天24小时就有22次。

正在为自己的想法得意时,查了一下参考答案发现我被幼稚的想法打败了,实际上一天24小时内,时分秒针只重合了2次,原因就是我设想从12点开始到1点5分,分针转了一圈快追上时针了,此刻时针与分针确实会有一次相遇,但是此时的秒针却没办法跟他们相逢,因为三个表针是联动的,针对于每个精确到秒的时间,三个针都有固定的位置,不是想重合就能重合的。

在1点5分附近的情况就是,时针和分针快要重合了,然后秒针匆匆赶来,然后时针和分针重合了,秒针还差一点才能到,然后秒针继续走,但是秒针走会继续带动分针和时针运动,然后秒针赶到了分针时针相遇的附近,却发现它俩已经“分手”了,秒针只能大步流星的一个个越过它们俩,期待着下次它们仨能相遇在一处。

时针和分针的相遇

在考虑时分秒三针重合情况之前,我们可以先想一下一天24小时内,分针和时针相遇了多少次,其实这才是我刚才想的那个答案22次,知道了次数之后我们还想知道具体的时间,可不可以算出来呢?当然可以!

接下来我们以一种通俗的方式来解这个问题,那就是列方程式求解,首先将时间作为连续值来看待,我们设时针的角速度是ω,因为时针走1格,分针会走1圈,也就是12格,所以分针的角速度是12ω,分针转了一圈追上时针用的是t,时针和分针转过角度差为1圈,也就是2π,那么此时可以列出方程:

12 ω t − ω t = 2 π 12ωt-ωt=2π 12ωtωt=2π

关于角速度ω的值,因为1圈的角度是2π,转一圈需要花的时间是12小时,所以ω=2π/12小时,带入方程得到t=12小时/11,同理如果分针转两圈追上时针,那么方程式为:

12 ω t − ω t = 4 π 12ωt-ωt=4π 12ωtωt=4π

可以求得t=24小时/11,由此我们就得到了,时针分针相遇时刻与分针转的圈数i的关系:

t = i ∗ 12 小 时 / 11 t=i*12小时/11 t=i12/11

代码实现

有了上面的分析,我们可以写代码计算一下一天之中时针和分针相遇具体时刻,因为开着lua编辑器,顺手就用lua写了,代码如下:

function print_meet(id, meet)
    local h = math.floor(meet)
    local t = meet - h;
    local ts = t * 3600;
    local m = ts // 60;
    local s = ts - m * 60;
    print(string.format("%02dth meet, time = %02d:%02d:%05.2f", id, h, m, s));
end

for i=1,24 do
    print_meet(i, i * 12 / 11)
end

运行结果

01th meet, time = 01:05:27.27
02th meet, time = 02:10:54.55
03th meet, time = 03:16:21.82
04th meet, time = 04:21:49.09
05th meet, time = 05:27:16.36
06th meet, time = 06:32:43.64
07th meet, time = 07:38:10.91
08th meet, time = 08:43:38.18
09th meet, time = 09:49:05.45
10th meet, time = 10:54:32.73
11th meet, time = 12:00:00.00
12th meet, time = 13:05:27.27
13th meet, time = 14:10:54.55
14th meet, time = 15:16:21.82
15th meet, time = 16:21:49.09
16th meet, time = 17:27:16.36
17th meet, time = 18:32:43.64
18th meet, time = 19:38:10.91
19th meet, time = 20:43:38.18
20th meet, time = 21:49:05.45
21th meet, time = 22:54:32.73
22th meet, time = 24:00:00.00
23th meet, time = 25:05:27.27
24th meet, time = 26:10:54.55

分析

从上面的结果来看,处于一天内的时间相遇时刻只有前22次,12点之后第一次相遇是在01:05:27.27,此时虽然时针和分针相遇,但是秒针大概在27秒的位置,离他们还很远,同理分针时针第二次相遇时刻02:10:54.55,秒针也没有跟他们在一起,但是有两次例外,那就是12:00:00.0024:00:00.00,这两次时针、分针、秒针完全重合了,所以我们也得到了本文标题中的答案。

总结

  1. 时分秒针在一天之内重合2次
  2. 从连续的时间来看,时针和分针在一天之内重合22次
  3. 有一种现实情况就是表盘上的时间是离散的,不连续的,最小的时间间隔是1秒,此时我们计算的第一次相遇时间01:05:27.27是不存在的,01:05:27的时候分针在时针之前,而01:05:28的时候分针在时针之后,它们也错过了,所以时针和分针考虑离散的情况,一天之后也只是重合2次。
这个错误是由于无法连接到本地主机的10248端口导致的。这个端口通常是kubelet进程监听的端口,用于健康检查。出现这个错误可能是由于kubelet进程没有正确启动或者配置错误导致的。 解决这个问题的方法是检查kubelet进程的状态和配置。你可以按照以下步骤进行操作: 1. 检查kubelet进程是否正在运行。你可以使用以下命令检查kubelet进程的状态: ```shell systemctl status kubelet ``` 如果kubelet进程没有运行,你可以使用以下命令启动它: ```shell systemctl start kubelet ``` 2. 检查kubelet的配置文件。你可以使用以下命令查看kubelet的配置文件路径: ```shell kubelet --kubeconfig /etc/kubernetes/kubelet.conf --config /var/lib/kubelet/config.yaml --bootstrap-kubeconfig /etc/kubernetes/bootstrap-kubelet.conf config view ``` 确保配置文件中的端口号和地址正确,并且与你的环境相匹配。 3. 检查网络连接。你可以使用以下命令检查是否可以连接到localhost的10248端口: ```shell curl -sSL http://localhost:10248/healthz ``` 如果无法连接,请确保端口没有被防火墙或其他网络配置阻止。 4. 检查docker的配置。有时候,kubelet进程依赖于docker进程。你可以按照以下步骤检查docker的配置: - 创建/etc/docker目录: ```shell sudo mkdir /etc/docker ``` - 编辑/etc/docker/daemon.json文件,并添加以下内容: ```json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ], "registry-mirrors": ["https://tdhp06eh.mirror.aliyuncs.com"] } ``` - 重启docker进程: ```shell systemctl restart docker ``` 请注意,以上步骤是一种常见的解决方法,但具体解决方法可能因环境而异。如果以上步骤无法解决问题,请提供更多的错误信息和环境配置,以便我们能够更好地帮助你。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlbertS

常来“玩”啊~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值