题目描述
给出两个时间(24小时制),求第一个时间至少要经过多久才能到达第二个时间。给出的时间一定满足的形式,其中x和y分别代表小时和分钟。0≤x<24,0≤y<60。
输入格式
第一行为数据组数T(1≤T≤50000)。
每组数据包括两行,分别代表两个时间
输出格式
每组数据输出一行,表示最少经过的分钟数。
输入样例
2
7:00
7:00
7:00
8:00
输出样例
0
60
老套路卡string卡cin
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> using namespace std; int deal(char s[],int from,int to) { int i=from,num=s[from]-'0'; i++; while(true) { if(i<=to) { num=num*10+(s[i]-'0'); i++; } else break; } return num; } int main() { int tes,m; while(~scanf("%d",&tes)) { while(tes--) { char s1[8],s2[8]; scanf("%s",s1); scanf("%s",s2); int num=0,pos1,pos2; if(s1[1]==':') pos1=1; else if(s1[2]==':') pos1=2; if(s2[1]==':') pos2=1; else if(s2[2]==':') pos2=2; int hour1=deal(s1,0,pos1-1); int hour2=deal(s2,0,pos2-1); int minu1=deal(s1,pos1+1,strlen(s1)-1); int minu2=deal(s2,pos2+1,strlen(s2)-1); if(hour1<=hour2) { num+=(hour2-hour1)*60; } else if(hour1>hour2) { num+=(24-(hour1-hour2))*60; } if(minu1<=minu2) { num+=minu2-minu1; } else if(minu1>minu2) { if(num==0) num=24*60; num-=60; num+=(60+minu2)-minu1; } printf("%d ",num); } } return 0; }