找到时钟分针和时针给定角度的所有计时
Find all timings with given angle of clock minute and hour hands
本文关键字:时钟 更新时间:2023-10-16
给定时针和分针之间夹角的绝对值。我们需要找到从午夜(含)到中午(不含)满足给定角度的所有有效的时间值(以小时和分钟为单位,都是非负整数)
值得注意的是,如果时钟指针之间的角度与所描述的角度相差小于1/120度,则认为时间值有效。此外,分针的运动也会影响时针。也就是说,每分钟,它移动了两个连续小时标记之间角距离的1/60。
那么如何以好的方式解决这个问题呢?我写了一段代码,里面有很多if和else。所以我想知道是否有一种干净的方法可以找到所有的人。
示例:如果A=30,则可以是:
01:00
11:00
我将在伪代码中尝试一个想法
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
Codechef当前竞争的问题
https://www.codechef.com/OCT15/problems/TIMEASR我真的不明白你的问题是什么。"如何解决这个问题?"给出一个简短的答案有点模糊。然而,我要做的第一件事是将所有值转换为相同的单位。30度对应1/12个圆,即在一分钟内一只手移动6度(1/60个完整圈),另一只手移动1/2度(一个完整小时30度)。所以你基本上要解决
abs( (t * 6) - (t*1/2) ) == 30 + n*360
其中n = 0,1,2,....
模部分使得直接解有点繁琐,但是你可以简单地对t
的任何值运行一个循环来找到解。希望这对你有所帮助。如果没有,也许您应该考虑显示一些代码....
这个问题现在不应该回答,因为它来自codechef主持的一个长期竞赛。所以,对于像我们这样想自己解决这个问题的发烧友来说,这是在破坏这个问题。
相关文章:
- 在C++/Linux中设置单调时钟的一些技巧
- 从文本文件中读取时钟时间和事件时间并进行处理
- this_thread::sleep_for和计时时钟之间的关系是否由C++11标准指定
- 用时钟测量程序的运行时间
- 如何在C++中为高分辨率时钟声明变量?
- 如何在 C++17 中检索 std::filesystem::file_time_type 的时钟类型
- 我的时钟函数在 c++ 函数中不起作用
- 不同机器之间的标准时钟性能差异显著
- 计时库中的时钟和琐碎时钟概念
- 如何使用 CTIME/Chrono Libarey 将开始时间与系统时钟进行比较
- 如何在给定时钟偏移的情况下正确获取时间
- 使用时钟"storing"特定时间
- 时钟功能返回零时差
- 开发简单的时钟和日期类时遇到问题
- 标准::计时::时钟、硬件时钟和周期计数
- C++ 和 C# 中的等效系统时钟毫秒?
- time_t的时钟周期和获取时间问题
- 在SFML中,时钟有限制吗?
- 如何在Vxworks中正确运行时钟获取时间以获得准确的时间
- 我正在用 c++ 制作一个小时钟,但遇到了"bug"或某种问题