码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1008.Clockr

时间:2015-10-04 19:36:13      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

我都不知道该如何写题解了。。。  根据时间算出每根针离原点的角度大小,然后减一下即可,要注意处理钝角.

 

#include<bits/stdc++.h>

using namespace std;
const int tot=12*60*60;

int gcd(int a, int b)
{
    if (b==0) return a;
    return gcd(b, a%b);
}

void work(int a1, int b1, int a2, int b2)
{
    int b=b1*b2/gcd(b1,b2),a;
    a1=b/b1*a1;
    a2=b/b2*a2;
    b1=b;
    b2=b;
    a=abs(a1-a2);
    int g=gcd(a,b);
    if (g==0)
    {
        printf("0 ");
        return;
    }
    else
    {
        a=a/g;
        b=b/g;
    }
    if (b==1)
    {
        if (a>180) a=360-a;
        printf("%d ",a);
    }
    else
    {
        if (a>180*b) a=360*b-a;
        g=gcd(a,b);
        a=a/g;
        b=b/g;
        printf("%d/%d ",a,b);
    }
}

int main()
{
    int T,h,m,s;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d:%d:%d",&h,&m,&s);
        if (h>=12) h=h-12;
        h=h*60*60+m*60+s;
        m=m*60+s;
        work(360*h,tot,360*m,60*60);
        work(360*h,tot,360*s,60);
        work(360*s,60,360*m,60*60);
        printf("\n");
    }
    return 0;
}

  

HDU 1008.Clockr

标签:

原文地址:http://www.cnblogs.com/wzb-hust/p/4854805.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!