查找具有给定角度的时钟分钟和时针的所有时间

时间:2015-10-02 11:39:29

标签: java c++ algorithm

给出时针和分针之间角度的绝对值。 我们需要找到满足给定角度的午夜(包括)到中午(不包括)的所有有效时间值(小时和分钟,非负​​整数)。

值得注意的是,如果该值的时钟指针与给定的角度之间的角度相差小于1/120度,则认为时间值有效。 此外,分针的移动影响时针。也就是说,每分钟,它移动两个连续小时标记之间的角距离的1/60。

那么如何以良好的方式解决这个问题。我写下了一段代码,其中包括if和else。所以只是想知道是否有找到所有这些的干净方法。

示例:如果A = 30则可以是:

01:00
11:00

4 个答案:

答案 0 :(得分:1)

我会在伪代码中尝试一个想法

for minuteHand in [0,59]:
    minuteAngle=angle(minuteHand) // gives the angle respect to the 0
    hourAngle1 = minuteAngle+A //Should be modified to account for the precision
    hourAngle2 = minuteAngle-A
    if isValidTime(minuteAngle,hourAngle1): // check if the two hands express a valid time at this angle
        found a valid time
    if isValidTime(minuteAngle,hourAngle2):
        found a valid time

答案 1 :(得分:1)

Codechef目前正在进行竞争的问题。

https://www.codechef.com/OCT15/problems/TIMEASR

答案 2 :(得分:0)

我真的不明白你的问题是什么。 "如何解决这个问题?"给出一个简短的答案有点模糊。但是,我要做的第一件事是将所有值转换为相同的单位。 30度对应于整圆的1/12,即在一分钟内,一只手移动6度(整圈的1/60),另一只手移动1/2度(整整一小时30度)。所以你基本上是想解决

Employee

其中Name该模数部分使得直接解决方案变得有点繁琐,但您只需为Employee的任何值运行循环即可找到解决方案。希望这可以帮助。如果没有,也许您应该考虑展示一些代码......

答案 3 :(得分:0)

现在不应该回答这个问题,因为它来自由codechef托管的LOng竞赛。所以,对于像我们这样想要自己解决这个问题的爱好者来说,这会破坏这个问题。