K13021 - 小科坐地铁

题目描述

小科每天上学都是坐地铁的,所以他妈妈给他办了一张地铁卡,每次乘坐地铁出入闸机时刷卡就行。最近一段时间,小科想知道从家到学校要多长时间,所以从地铁公司调出了n次乘车的记录信息进行核算,手动核算太麻烦,所以他想编写一个程序进行核算。

一次乘车记录包含两条信息,第一条信息是入闸机时闸机上显示的信息,表示入闸机开始乘车时间,第二条信息是出闸机时闸机上显示的时间,表示结束乘车时间

例如,一条乘车记录如下

09:58 10:48

前一条是入闸机时的信息,表示在入口闸机上刷卡时间是9点58分

后一条是出闸机时的信息,表示在出口闸机上刷卡时间是10点48分

那么可以知道这次乘车花费时间是50分钟 

现在给出小科n次乘车的记录信息,请你计算出n次乘车花费的时间

输入格式

第一行,n次乘车记录 (1 ≤ n ≤ 100)

接下来n行,表示有n组入站闸机和出站闸机的乘车时间记录

输出格式

输出n行,每次乘车花费的时间

格式为:xxHyyM其中xx和yy分别是小时和分钟,并且都是两位数,不够两位时用0补齐

输入输出样例

输入样例1:

1

09:58 10:48

输出样例1:

00H50M

输入样例2:

2

09:34 10:52

06:35 07:45

输出样例2:

01H18M

01H10M

说明

(1)对于100%的数据,1 ≤ n ≤ 100, 

(2)对于每次乘车记录,出闸机时间一定大于入闸机时间

这一题本人写的有亿点点复杂,还请见谅

代码:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,s1,s2,k1,q,w;
    cin>>n;
    char a[1100];
    while(n--){
        for(int i=1;i<3;i++) cin>>a[i];
        if(a[1]!='0'){
            s1=a[1]-'0';
            k1=a[2]-'0';
            s1=s1*10+k1;
        }
        else s1=a[2]-'0';
        cin.get();
        for(int i=1;i<3;i++) cin>>a[i];
        if(a[1]!='0'){
            s2=a[1]-'0';
            k1=a[2]-'0';
            s2=s2*10+k1;
        }
        else s2=a[2]-'0';
        q=s1;
        w=s2;
        cin.get();
        for(int i=1;i<3;i++) cin>>a[i];
        if(a[1]!='0'){
            s1=a[1]-'0';
            k1=a[2]-'0';
            s1=s1*10+k1;
        }
        else s1=a[2]-'0';
        cin.get();
        for(int i=1;i<3;i++) cin>>a[i];
        if(a[1]!='0'){
            s2=a[1]-'0';
            k1=a[2]-'0';
            s2=s2*10+k1;
        }
        else s2=a[2]-'0';
        s1-=q;
        s2-=w;
        if(s2<0){s1--;s2+=60;}
        if(s1==0) cout<<"00H";
        else if(s1<10) printf("0%dH",s1);
        else cout<<s1<<"H";
        if(s2==0) cout<<"00M";
        else if(s2<10) printf("0%dM",s2);
        else cout<<s2<<"M";
        printf("\n");
    }   
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值