2011年12月27日 星期二

C ACM 579 Clock Hands

 [心得] : 0.032
1:不可以用abs 因為 int abs(),浮點數會出不來
2.h_angle=h*30+((float)(m*6)/12); 因為 int m所以運算時記得 轉型
3.時針的角度ㄧ格為6度,時針走一小時 就跑了30度, 加上分針每跑ㄧ分,時針轉的角度是分針的1/12
4.要記得考慮 0:00 的狀況要跳出迴圈,不然會 Wrong answer!
5.大於180度時 ,要取小的角度 (所以用360度去減)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
   int h;
   int m;
   float h_angle;
   float m_angle;
   float angle;
  
   while(scanf("%d:%d",&h,&m)==2)
   {
     if(h==0 && m==0)
     break;                           
    m_angle = m*6;
    h_angle=h*30+((float)(m*6)/12);
    if(h_angle > m_angle)
       angle = h_angle -m_angle;
    else
       angle = m_angle -h_angle;
    if(angle >180)
     printf("%.3f\n",(360-angle));
    else
     printf("%.3f\n",angle);
   }
   system("pause");
   //return 0;
}

沒有留言:

張貼留言