给定两个数字H和M表示时针和分针的长度以及两个时间间隔(比如T1 和 T2 ),形式为HH:MM ,任务是找到时针和分针在时间T1之间移动的距离和T2 。
例子:
Input: H = 5, M = 7, T1 = “1:30”, T2 = “10:50”
Output:
Distance travelled by minute hand: 410.50144006906635
Distance travelled by hour hand: 24.434609527920614
Input: H = 4, M = 5, T1 = “1:30”, T2 = “10:50”
Output:
Distance travelled by minute hand: 293.21531433504737
Distance travelled by hour hand: 19.54768762233649
方法:
- 使用本文中讨论的方法找出两个时间间隔 T1 和 T2 之间的差异。
- 将上面获得的持续时间更改为分钟:
Total Minutes = hours * 60 + minutes
- 由于分针在 60 分钟内旋转一圈,因此分针(例如rm )覆盖的旋转数由下式给出
- 由于时针在 60*12 = 720 分钟内旋转一圈,因此,时针(例如rh )覆盖的旋转数由下式给出
- 时针移动的总距离由下式给出
- 分针移动的总距离由下式给出
下面是上述方法的实现:
Python
# Python program for the above approach
import math
# Function to remove ':' and convert
# it into an integer
def removeColon(s):
if (len(s) == 4):
s = s[:1]+s[2:]
if (len(s) == 5):
s = s[:2]+s[3:]
return int(s)
# function which find the difference
# between time interval
def diff(s1, s2):
# Change string as 2:21 to 221
time1 = removeColon(s1)
time2 = removeColon(s2)
# Difference between hours
hourDiff = time2 // 100 - time1 // 100 - 1;
# Difference between minutes
minDiff = time2 % 100 + (60 - time1 % 100)
if (minDiff >= 60):
hourDiff+= 1
minDiff = minDiff - 60
# Convert answer again in string
# with ':'
res = str(hourDiff) + ':' + str(minDiff)
return res
# Function for finding the distance travelled
# by minute hand and hour hand
def disTravel(T1, T2, M, H):
# Find the duration between these time
dur = diff(T1, T2)
# Remove colom from the dur and
# convert in int
s = removeColon(dur)
# Convert the time in to minute
# hour * 60 + min
totalMinute =(s//100)*60 + s % 100
# Count min hand rotation
rm = totalMinute / 60;
# Count hour hand rotation
rh = totalMinute / 720;
# Compute distance traveled by min hand
minuteDistance = rm * 2* math.pi * M;
# Compute distance traveled by hour hand
hourDistance = rh * 2* math.pi * H;
return minuteDistance, hourDistance
# Driver Code
# Given Time Intervals
T1 ="1:30"
T2 ="10:50"
# Given hour and minute hand length
H = 5
M = 7
# Function Call
minuteDistance, hourDistance = disTravel(T1, T2, M, H)
# Print the distance traveled by minute
# and hour hand
print("Distance traveled by minute hand: "
,minuteDistance)
print("Distance traveled by hour hand: "
,hourDistance )
输出:
Distance traveled by minute hand: 410.50144006906635
Distance traveled by hour hand: 24.434609527920614