The idea is to take 12:00 (h = 12, m = 0) as a reference. Following are detailed steps.
1) Calculate the angle made by hour hand with respect to 12:00 in h hours and m minutes.
2) Calculate the angle made by minute hand with respect to 12:00 in h hours and m minutes.
3) The difference between two angles is the angle between two hands.
How to calculate the two angles with respect to 12:00?
The minute hand moves 360 degree in 60 minute(or 6 degree in one minute) and hour hand moves 360 degree in 12 hours(or 0.5 degree in 1 minute). In h hours and m minutes, the minute hand would move (h*60 + m)*6 and hour hand would move (h*60 + m)*0.5.
so the final answer will be the difference of the above formula...
(h*60+m)*0.5 - (h*60+m)*6
program
public class angle
{
public static void main(String[] args)
{
System.out.println(cal_angle(10,34));
}
public static int cal_angle(int hour,int min)
{
int h_angle=(int)((hour*60+min)*0.5);
int angle=(min*6)-h_angle;
//now calculate minimum angle...
if (angle<0) angle=-angle;
return Math.min(360-angle,angle);
}
}
output
113