题目描述
给出两个时间(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;
}