Given two numbers H and M which denotes the length of the hour and minute hand and two time intervals(say T1 & T2) in form of HH:MM, the task is to find the distance travelled by hour hand and minute hand between time T1 and T2.
Examples:
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.434609527920614Input: 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
Approach:
- Find the difference between the two time intervals T1 and T2 by using the approach discussed in this article.
- Change the time duration obtained above into minutes as:
Total Minutes = hours * 60 + minutes
- Since minute hand covers one rotation in 60 minutes therefore, number of rotations covered by minute hand(say rm) is given by
- Since hour hand covers one rotation in 60*12 = 720 minutes therefore, number of rotations covered by hour hand(say rh) is given by
- The total distance traverse by the hour hand is given by
- The total distance traverse by the minute hand is given by
Below is the implementation of the above approach:
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
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.