北邮OJ 89. 统计时间间隔 java版
89. 统计时间间隔
时间限制 1000 ms 内存限制 65536 KB
题目描述
给出两个时间(24小时制),求第一个时间至少要经过多久才能到达第二个时间。给出的时间一定满足的形式,其中x和y分别代表小时和分钟。0≤x<24,0≤y<60。
输入格式
第一行为数据组数T(1≤T≤50000)。
每组数据包括两行,分别代表两个时间
输出格式
每组数据输出一行,表示最少经过的分钟数。
输入样例
2
7:00
7:00
7:00
8:00
输出样例
0
60
乍一想有点复杂,情况比较多。但是把两个时间都化为以0:00为开始的分钟表示时就简单多了,无非就两种情况,一个是第一个分钟数大于第二个还有第二个大于第一个。
那么这就相当于一个环, 不是求优弧长度,就是求劣弧长度,劣弧长度很好求,大的减去小的即可,优弧长度要用总长度24*60减去劣弧长度。
package test;
import java.io.BufferedInputStream;
import java.util.Scanner;
public class TimejiangeMain {
public static void main(String[] args) {
Scanner scan = new Scanner(new BufferedInputStream(System.in));
int T = scan.nextInt();
int h1,m1,h2,m2,time11,time22;
String time1,time2;
scan.nextLine();
int time;
for(int i = 0;i<T ;i++){
time1 = scan.nextLine();
h1 = Integer.parseInt(time1.split(":")[0]);
m1 = Integer.parseInt(time1.split(":")[1]);
time11 = h1*60 + m1;
time2 = scan.nextLine();
h2 = Integer.parseInt(time2.split(":")[0]);
m2 = Integer.parseInt(time2.split(":")[1]);
time22 = h2*60 + m2;
if(time11<=time22){
time = time22-time11;
System.out.println(time);
}else{
time = 24*60-(time11-time22);
System.out.println(time);
}
}
}
}