【北邮OJ】89.统计时间间隔

题目描述
给出两个时间(24小时制),求第一个时间至少要经过多久才能到达第二个时间。给出的时间一定满足的形式,其中x和y分别代表小时和分钟。0≤x<24,0≤y<60。

输入格式
第一行为数据组数T(1≤T≤50000)。
每组数据包括两行,分别代表两个时间

输出格式
每组数据输出一行,表示最少经过的分钟数。

总结:
1。处理字符串:一次性读入char数组,然后单个字符处理
2。默认最后一个数据输出也有回车
3。纯数字字符串转为数字的方法
4。使用cout超过时间限制。G++ 中的 I/O 操作,是基于比较复杂的实现模式,相对于 scanf 和 printf 而言,cin 和 cout要慢很多。经验表明他们之间的差异在当你使用 G++ 作为编译器的时候显得尤为突出。所以当一个问题要求有比较大量的输入和输出时,cin 和 cout 将会导致超出时间限制(Time Limit Exceed)!

#include <stdio.h>
#include <iostream>
using namespace std;

int main(){
    int t,T;
    cin>>T;
    int min,hour;
    char str1[100],str2[100];
    for(t=1;t<=T;t++){
        scanf("%s",str1);
        scanf("%s",str2);
        int i,min1=0,min2=0,hour1=0,hour2=0;
        for(i=0;str1[i]!=':';i++){
            hour1 = hour1*10;
            hour1 = hour1+(str1[i]-'0');
        }
        i=i+1;
        for(i;str1[i]!='\0';i++){
            min1 = min1*10;
            min1 = min1+(str1[i]-'0');
        }

        for(i=0;str2[i]!=':';i++){
            hour2 = hour2*10;
            hour2 = hour2+str2[i]-'0';
        }
        i=i+1;
        for(i;str2[i]!='\0';i++){
            min2 = min2*10;
            min2 = min2+str2[i]-'0';
        }
        min = (min2-min1+60)%60;
        if(min2<min1) {hour2--;}
        hour = (hour2-hour1+24)%24;
        printf("%d\n",(hour*60+min));
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/u012372720/article/details/64533349
今日推荐