toj2095 Clock

题目链接:http://acm.tju.edu.cn/toj/showp2095.html

题目大意:问从起点时刻第一次走到终点时刻的过程中分针和时针相遇了多少次

思路:时针每分钟走动0.5度分钟每分钟走动6度,t为从00:00到当前时刻走了多少分钟,那么分针就比时针多走了5.5t度,每多走360就说明分针与时针相遇了一次
然后计算终点时刻和起点时刻分别对00:00来说相遇了时针多少次,然后他们的差值就是这段区间内相遇了多少次,如果终点时刻小于起点时刻那么就是这个差值加上11,因为一个周期内最多相遇11次

代码:

#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
    int a,b,c,d,s,e,ans,aa,cc;
    cout<<"Initial time  Final time  Passes"<<endl;
    while(cin>>a>>b>>c>>d)
    {
        aa=a;cc=c;
        if(a==12)aa=0;
        if(c==12)cc=0;
        s=aa*60+b;  //起点时刻
        e=cc*60+d;  //终点时刻
        ans=((e*11)/720)-((s*11)/720);    //5.5e/360   5.5s/360
        if(s>e)ans+=11;  //一个周期(12个小时)至多相遇11次
        printf("       %02d:%02d       %02d:%02d      %2d\n",a,b,c,d,ans); //这里用printf格式好控制 因为3:20 要显示为03:20
    }
    return 0;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值