时间限制:1000ms 内存限制:65536KB
题目描述
给出两个时间(24小时制),求第一个时间至少要经过多久才能到达第二个时间。给出的时间一定满足形式,其中x和y分别表示小时和分钟,0 <= x < 24,0 <= y < 60。
输入格式
第一行为数据组数T(0 <= T <= 50000)
每组数据包括两行,分别代表时间
输出格式
每组数据输出一行,表示最少经过的分钟数
输入样例
2
7:00
7:00
7:00
8:00
输出样例
0
60
题目分析
1、第一个时间小于第二个时间,表明是走小圈,是在一天,正常的算法
2、第一个时间大于第二个时间,表明这两个时间是在两天,要用后一个时间减去前一个时间再加上一天的时间。
8:00 7:00,-60+24x60=23x60
代码
#include <iostream>
#include <stdio.h>
using namespace std;
//超过时间限制,第一个就想输入输出,scanf和printf比cin,cout省时很多
int main(){
int T;
int hour1, min1, hour2, min2, temp;
cin >> T;
while(T--){
scanf("%d:%d", &hour1, &min1);//格式化输入
scanf("%d:%d", &hour2, &min2);
int temp = (hour2-hour1)*60 + min2-min1;
if(temp < 0){
temp = temp + 1440;
//cout << temp << endl;
printf("%d\n", temp);
}
else{
//cout << temp << endl;
printf("%d\n", temp);//scanf和printf在输入输出上的强大效率!!!
}
}
return 0;
}
运行结果
总结
开始用的cout输出,提交时显示“超过时间限制”。超过时间限制,第一个就想输入输出,scanf和printf比cin,cout省时很多。改用printf后就通过了。