2014年7月14日 星期一

uva 579 Clock Hands

統一以 12 點為基準去計算角度:

分針走一格 => 1 min => 時針走 0.5 度

時鐘上一格 6 度。

ex: 8:10
(先不考慮分針對時針的影響)
hour : 8 -> 8 * 5 * 6 = 240 度
min : 10 -> 10* 6 = 60 度                =>   hour : 240 + 10 * 0.5 = 245 度

245 - 60 = 185 (轉換成最小正角度) => 360 - 185 = 175 度


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

int main(void){
    int h,m;
    char input[10]={0};
    double degree,hD,mD;

    while(fgets(input,10-1,stdin)!=NULL){
        sscanf(input,"%d:%d",&h,&m);
        if(!h&&!m) break;

        /* convert to degree */
        mD=m*6;
        hD=h*5*6+m*0.5;

        degree=fabs(hD-mD);
        if(degree > 180)
            degree = 360 - degree;
        printf("%.3lf\n",degree);
    }

    return 0;
}

沒有留言:

張貼留言