HDU 5705 Clock(模拟)

Clock

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=5705

解题思路:

给你一个时间,让你找出这个时间之后的一个时间使得时针与分针所成角度为题目所给定的。

我们假设一圈度数为360*120,则时针一小时走3600度。分针一分钟走720度。

设当前时间为h,m分 则时针的角度为h*3600+m*60.分针的角度为720*m;

因此m = (3600*h-120*angle)/660 或者 m = (3600*h+120*angle)/660,秒为%660/11。

剩下的我们枚举小时即可求解。

AC代码:

#include <bits/stdc++.h>
using namespace std;

int main(){
    int h,f,m;
    int icase = 0;
    while(~scanf("%d:%d:%d",&h,&f,&m)){
        int ang;
        scanf("%d",&ang);
        ang *= 120;
        int t1 = 3600*h+60*f+m;
        int a1,a2,a3;
        int inf = 1e9;
        for(int i = 0; i < 12; ++i){
            int hh = 3600*i-ang;
            int mm = hh/660;
            int ss = hh%660/11;
            int t2 = i*3600+mm*60+ss;
            int T = t2-t1;
            if(T <= 0)
                T += 60*60*12;
            if(T < inf){
                a1 = i;
                a2 = mm;
                a3 = ss;
                inf = T;
            }
            hh = 3600*i+ang;
            mm = hh/660;
            ss = hh%660/11;
            t2 = i*3600+mm*60+ss;
            T = t2-t1;
            if(T <= 0)
                T += 60*60*12;
            if(T < inf){
                a1 = i;
                a2 = mm;
                a3 = ss;
                inf = T;
            }
        }
        printf("Case #%d: %02d:%02d:%02d\n",++icase,a1,a2,a3);
    }
    return 0;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值