Help to solve this program

Clock AngleMarks:30

Problem Description

There are 360 Longitudes on the Earth, which are equidistant vertical imaginary lines drawn on the Earth, separated by 1 degree each from center of the Earth. Period of the rotation of the Earth on its axis is 24 hours. All countries have their own official times and hence time zones.

UTC is universal time coordinate which passes through 0 (Zero degree) longitude.

Time at a particular location on Earth can be calculated using period of the rotation of Earth and longitude of that particular location. For example, Indian time zone IST (Indian standard Time) is located at 82.5° E longitude. Hence, Indian time can be calculated as below:-

IST = UTC + (24/360)*82.5 = UTC + 5:30Hrs

Now suppose we changed period of rotation of the earth using some imaginary power, this will change the time at every longitude on the earth.

Calculate the smallest angle between hour and minute hand of the clock , which shows the difference of time at a particular longitude and the time at UTC i.e. we have to take smaller of the two angle formed between hour and minute hand.

Constraints

To show the time difference on clock, 12-hour clock (as shown below) shall be used, irrespective of period of the earth’s rotation, for this question only.

Input Format

  1. Period of the earth’s rotation in Hours (Integer only)

  2. Value of Longitude up to 2 place of decimal

Output

Smallest angle between hour and minute hand of the clock, which shows the difference between time at a particular longitude and time at UTC, up to 2 decimal places.

Test Case

Explanation

Example 1

Input

24

82.50

Output

15.00

Explanation

If period of rotation of earth is 24 hours then time at 82.5 degree longitude will be (24/360)*82.50 = 5:30 and minimum angle at this time between minute and hour hand will be 15 degree.

Example 2

Input

12

360.00

Output

0.00

Explanation

If period of rotation of earth is 12 hours then time at 360 degree longitude will be (12/360)*360 = 12:00 and minimum angle at this time between minute and hour hand will be 0 degree.

My solution is…

import math
def cal(h,m): 
		

		
		if (h == 12): 
			h = 0
		if (m == 60): 
			m = 0

		hour_angle = 0.5 * (h * 60 + m) 
		minute_angle = 6 * m
		
		angle = abs(hour_angle - minute_angle) 
		
		
		return min(360-angle,angle)
def ist(h,r):
    Ist=round((h*r*1.0)/360,3)
    int_ist=int(Ist)
    float_ist=math.ceil((Ist-int_ist)*60)
    return cal(int_ist,float_ist)



n=int(input())
deg=float(input())
print("%.2f"%ist(n,deg))

Passed all sample cases but show wrong answer when i submitted this…what is the mistake in my code…

check this ,
import java.util.*;
public class Main{
public static void main(String args[])
{
Scanner sc=new Scanner(System.in);
int n =sc.nextInt();
float l =sc.nextFloat();
float t=((float)n/360)l;
int h=(int)t;
float d=(t-h)60;
int m=(int)d;
//System.out.println(h);
//System.out.println(m);
int ha = ((h
60)+m)/2;
int ma= m
6;
float angle=Math.abs(ha-ma);
if(angle>180)
System.out.println(String.format("%.2f",360-angle));
else
System.out.println(String.format("%.2f",angle));
}
}

1 Like

Thanks

I think it is TCS intership question