博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于一天内时针分针重合次数
阅读量:5886 次
发布时间:2019-06-19

本文共 871 字,大约阅读时间需要 2 分钟。

看到一个很有意思的话题——一天(24小时)内,时针和分针重合的次数。如果只是想知道结果,最直接的办法可能就是比划一下,然后很快就能够知道答案。但是如果是要用算法代码来完成的话就不再那么直接简单了。
首先想想时针分针存在什么样的关系,当分针转动一圈时针转1/60圈。相同时间x(分)内,分针会转动s1=x/60圈,时针则会转动s2=x/(60*12)圈,那么他们重合即为两者转动的圈数的小数部分是相等的。由此可知 s1-(int)s1 = s2 - (int)s2 。然后可以得出如下代码:

但是输出的结果却是 count=3,分析一下,按照上面的方法只能得到在整数分钟上的重合次数,这并不是我们想要的结果,按照常识,分针时针重合很多都不是发生在整数分钟上的,那么可以把我们的循环间隔的1改得足够小,那样可能会得到正确结果,但是足够小是多小呢,这个无从得知,而且重合的位置可能是一个无限小数,那么我们可以换一种方式。
既然不能直接通过相等判断,那么我们可以判断 上一次 的分针的偏移位置在时针前面 和 下一次分针的偏移位置在时针的后面 ,以此来确定在这个过程中分针和时针发生了重合,得到以下代码:

得到输出结果 count=20

这个也不是想要的结果,仔细查看代码,发现代码里面只是比较了整数分钟之间是否存在重合,忽略了整数分钟上发生的重合。于是多加一个判断判断便可以了:

最后输出结果 count=23

后面发现,循环的间隔不需要是每分钟,因为每次重合分针转动都超过了一圈,那么每个重合点在表盘上都会是大于5/60的距离,故可以使用5分钟的间隔进行循环:

结果:count=23。

综合,其中计算重合次数包括了开始的00:00和最后的24:00两个时间点。

最开始只是想知道一个结果,到底24小时时针和分针可以重合多少次,到最后的一段代码实现,整个过程其实是十分有意思的,也许并不是因为一个问题得到解决,更重要的可能是过程中的学习和思考。

转载于:https://juejin.im/post/5a323e23f265da433562c880

你可能感兴趣的文章
树莓派SSH命令行连接wifi
查看>>
sed
查看>>
c#拦截程序的运行
查看>>
[转载] 百科全说——潘怀宗:“认识”食品添加剂(10-10-19)
查看>>
第一行代码
查看>>
IntelliJ IDEA快捷键大全
查看>>
[转载] 高级人工智能——第1章 绪论
查看>>
windows 2003的基本培配置
查看>>
我的友情链接
查看>>
DATAGUARD搭建脚本.
查看>>
[转载] 七龙珠第一部——第126话 复活的神龙
查看>>
第五阶段计划
查看>>
SDN in Action: Practice SDN/OpenFlow with LINC-Switch and OpenDaylight
查看>>
Java基础学习总结(19)——Java环境变量配置
查看>>
Java基础学习总结(1)——equals方法
查看>>
浅谈mysql优化方式
查看>>
如何修改MySQL字符集
查看>>
C++语言学习(十五)——C++抽象类与接口
查看>>
Java基础学习总结(4)——对象转型
查看>>
二、使用Okio框架进行输出操作(Sink)
查看>>