Page 3 of 3

### Re: 579 - ClockHands

Posted: Sat Mar 12, 2011 2:34 pm
ok

### Re: 579 - ClockHands

Posted: Sun Mar 13, 2011 6:50 pm
Your code is giving these output.
input:
1:59
1:01
your output:
-0.000
-36893488.....something.
But the output should be:
65.500
24.500
Try to use fabs function from math.h
and visit this page http://en.wikipedia.org/wiki/Clock_angle_problem
remember angle is always <=180.000

### Re: 579 - ClockHands

Posted: Sun Mar 20, 2011 1:55 pm
tnx Bro ACC

### Re: 579 - ClockHands(WHY WA??SOS)

Posted: Thu Jan 19, 2012 1:09 pm
I don't know why I get WA though I have check many inputs and outputs.Please help me,thanks in advance!
#include<stdio.h>
#include<math.h>
int main(void)
{
int h,m;
double a;
while(scanf("%i:%i",&h,&m)!=EOF && (h||m))
{
a=fabs(5.5*m-30*h);
if(a-180>1e-9)
a=360-a;
printf("%.3f\n",a);
}
return 0;
}

### Re: 579 - ClockHands

Posted: Sun May 27, 2012 10:04 pm
Plz!! Someone help me out wid this code. I got WA.
579: Code

#include<stdio.h>
#include<math.h>
int main()
{
float h,m,ang,n;
while(scanf("%f:%f",&h,&m)==2)
{
if(h==0 && m==0) break;
ang=((h*60+m)/2-(m*6));
if(ang>180) ang=360-ang;
if(ang<0) ang=fabs(ang);
printf("%.3f\n",ang);
}
return 0;
}

### Re: 579 - ClockHands

Posted: Fri Jun 01, 2012 12:40 am
Use double instead of float.

### Re: 579 - ClockHands

Posted: Sat Sep 08, 2012 4:44 pm
Float is OK. I use float and got AC.

### 579 TLE

Posted: Thu Aug 08, 2013 9:02 pm
The java code is getting TLE, can someone tell me how can this piece of code be optimized ?

The equivalent C code has passed the judge without any problem.

Thanks in advance. Code: Select all

``````import java.util.*;
import java.text.DecimalFormat;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class ClockHands
{
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
String[] arr = line.split("[:\\s]+");
int hr = Integer.parseInt(arr);
int min= Integer.parseInt(arr);
double hrDegree, minDegree, diff;
DecimalFormat df = new DecimalFormat("0.000");
while(hr > 0 || min > 0)
{
if(hr == 12) hr = 0;
hrDegree = ((hr+(min/60.0))/12.0) * 360;
minDegree = (min/60.0) * 360;
diff = hrDegree > minDegree ? hrDegree-minDegree : minDegree-hrDegree;
if(diff > 180) diff = 360 - diff;
System.out.printf("%s\n", df.format(diff));

line = br.readLine();
arr = line.split("[:\\s]+");
hr = Integer.parseInt(arr);
min = Integer.parseInt(arr);
}
}
}
``````

### Re: 579 TLE

Posted: Thu Aug 08, 2013 11:06 pm
Use Class Main. Java is too slow for some problems.

### Re: 579 TLE

Posted: Fri Aug 09, 2013 6:31 am
Actually got a few friends helped me optimized the code.
Apparently the use of StringBuilder and printing it out all at once is much faster than calling System.out.printf.
The performance gain is more than 100%

### Re: 579 TLE

Posted: Sat Aug 10, 2013 12:01 am
You could also try BufferedWriter.

### 579 - ClockHands

Posted: Fri Nov 01, 2013 2:38 am
3rd case in the sample input.
How 8:10 outputs 175, It should be 180 ?

### Re: 579 - ClockHands

Posted: Fri Nov 01, 2013 7:57 pm
The big hand at 10 is 60 degrees to the right of 12.
The small hand at 8:10 is 115 degrees to the left of 12.

### Re: 579 - Clock Hands

Posted: Tue Dec 16, 2014 9:31 pm
Getting WA...plz help me out. Code: Select all

``````#include<stdio.h>

int main()
{
float a,b;
char c;
while(scanf("%f %c %f",&a,&c,&b)==3)
{
if(a==0&&b==0) return 0;
float d,d1,d2,d3;
if(b==0)
{
if(a<=6) d=a*5*6;
else
d=(12-a)*5*6;
}
else
{
d1=b/2;
d2=b/5;
if(a==d2) d3=0;
else if(a>d2) d3=(a-d2)*5*6;
else if(a<d2) d3=(d2-a)*5*6;

if(a>d2) d=d3+d1;
else if(a==d2) d=d1;
else d=d3-d1;
if(d>180) d=360-d;
}

printf("%0.3f\n",d);

}
return 0;
}
``````

### Re: 579 - Clock Hands

Posted: Tue Dec 16, 2014 9:53 pm
Try using double instead of float.