D.579 - ClockHands

本题依靠钟表时、分针的规律求解.
时针:
12h*60=720 --> 360   ///720分钟转一圈,每分钟0.5度
        1  --> 0.5
分针:
60 --> 360   ///60分钟转一圈,每分钟6度
 1 -->  6
/******最重要的一点***分针所走的时间,时针会走相应的度数***********/
差值:
h*60*0.5+m*0.5-m*6;
=>30*h-5.5*m;
最后把答案控制在[0.000,180.000]之间就行了.

int main()
{
    double H,M;
    while(scanf("%lf:%lf",&H,&M)!=EOF)
    {
        if(H==0.0&&M==0.0)
            break;
        double ans=fabs(30.0*H-5.5*M);
        int time=ans/360;
        ans=ans-360.0*time;
        printf("%.3lf\n",ans<180.0?ans:360.0-ans);
    }
    return 0;
}

你可能感兴趣的:(uva)