闹铃问题

来源:互联网 发布:梁朝伟演技知乎 编辑:程序博客网 时间:2024/04/30 12:34

1. 取模运算:贪睡时间的实现

贪睡时间更像是一种周期,取模运算天然具有周期的属性。

比如设置贪睡时间为 5 分钟:

if ((当前时间-闹铃开始时间)%5 == 0){    // 执行响铃}

2. 贪睡时间的分辨率

问,如果手机的闹铃可以设置的最短贪睡时间是10分钟(也即每隔10分钟响铃一次),那么如何做才能达成贪睡时间为5分钟的效果(每隔5分钟响铃一次)?

答,设置两个闹铃,贪睡时间均为10分钟,只是开始时间偏移(offset)为5分钟。如,分别在7点和7点零5设置一个贪睡时间为10分钟的响铃,则,7:00,7:05,7:10,7:15,……

人问,你这样的问题有毛线的实际意义。不尽然,意义大了。现在华为手机的贪睡时间最短是5分钟,且均是5的倍数(也即分辨率是5分钟)。可偏有这样一人,他想每2分钟被闹铃一次,试问有没有什么方法呀。有呀,设置5个贪睡时间为10分钟的闹铃,开始时间的偏移为2分钟,如7:00,7:02,7:04,7:06,7:08。

我们可以继续泛化这一问题,显然贪睡时间更久的,通过不同的开始时间的偏移,可以获得一些较低的贪睡时间,反之却不可以。那么我们能否通过单一的贪睡时间,比如60分钟,获取其他较低的贪睡时间。

  • (1)60 ⇒ 30,设置2个闹铃,偏移量为30分钟
  • (2)60 ⇒ 20,设置3个闹铃,偏移量为20分钟
  • (3)60 ⇒ 10,设置6个闹铃,偏移量为10分钟
  • (4)60 ⇒ 5,设置12个闹钟,偏移量为5分钟

#==

0 0
原创粉丝点击