2015多校第8场 HDU 5387 Clock 模拟,计算时钟指针角度

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5387

题意:给你一个格式为hh:mm:ss的时间,问改时间时针与分针、时针与秒针、分针与秒针之间夹角的度数是多少,若夹角度数不是整数,则输出最简分数形式A/B,即A与B互质。

解法:该题的思路很简单,只需先将时针、分针、秒针代表的时间转换成距离0刻度的角度,然后再求两者之间夹角的度数就会方便许多,需要注意,每秒钟,秒针对分针的贡献是0.1°,秒针对时针的贡献是(1/120)°;每分钟,分针对时针的贡献是0.5°。为了使得计算角度时均为整数,本人特地将角度放大了120倍,最后反正是要化成最简分数形式的,故再除以120即可。


#include <bits/stdc++.h>
using namespace std;
int T,h,m,s,a,b,c;
int main()
{
    scanf("%d", &T);
    while(T--){
        scanf("%d:%d:%d", &h,&m,&s);
        h%=12;
        h = h*3600+m*60+s;
        m = m*720+s*12;
        s*=720;
        a = abs(h-m);
        b = abs(h-s);
        c = abs(m-s);
        if(a>21600) a = 43200-a;
        if(b>21600) b = 43200-b;
        if(c>21600) c = 43200-c;
        if(a%120){
            printf("%d/%d ", a/__gcd(a,120), 120/__gcd(a,120));
        }
        else{
            printf("%d ", a/120);
        }

        if(b%120){
            printf("%d/%d ", b/__gcd(b,120), 120/__gcd(b,120));
        }
        else{
            printf("%d ", b/120);
        }

        if(c%120){
            printf("%d/%d ", c/__gcd(c,120), 120/__gcd(c,120));
        }
        else{
            printf("%d ", c/120);
        }
        printf("\n");
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值