杭电2395

简单题;

就是让你把时间a调到时间b;

一般容易错,可以利用循环的思想;

a,b直接的距离=min{(a+k-b)%k,(b+k-a)%k};即顺时针距离和逆时针距离的最小值;

#include<stdio.h>
int main ()
{
    int n,x1,x2,x3,y1,y2,y3,s,s1,s2;
    char a[3],b[3];
    scanf("%d",&n);
    while(n--)
    {
        s=0;
        scanf("%d:%d%s",&x1,&x2,a);
        scanf("%d:%d%s",&y1,&y2,b);
        printf("Going from %d:%02d%s to %d:%02d%s requires ",x1,x2,a,y1,y2,b);
        x3=x2%10;
        x2=x2/10;
        y3=y2%10;
        y2=y2/10;
        if(a[0]!=b[0])//上下午;
            s++;
        s1=(x3-y3+10)%10;
        s2=(y3-x3+10)%10;
        s+=(s1>s2?s2:s1); //分钟的个位;

        s1=(x2-y2+6)%6;
        s2=(y2-x2+6)%6;
        s+=(s1>s2?s2:s1);//分钟的十位;
        x1--;
        y1--;
        s1=(x1-y1+12)%12;
        s2=(y1-x1+12)%12;
        s+=(s1>s2?s2:s1);//时针,转化为0-11再求;
        if(s!=1)  //加不加es;
            printf("%d pushes.\n",s);
        else
            printf("%d push.\n",s);
    }
    return 0;
}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值