668. 游戏时间2
读取四个整数 A,B,C,D用来表示游戏的开始时间和结束时间。
其中 A 和 B 为开始时刻的小时和分钟数,C 和 D 为结束时刻的小时和分钟数。
请你计算游戏的持续时间。
比赛最短持续 11 分钟,最长持续 24 小时。
输入格式
共一行,包含四个整数 A,B,C,D。
输出格式
输出格式为 O JOGO DUROU X HORA(S) E Y MINUTO(S)
,表示游戏共持续了 X 小时 Y 分钟。
数据范围
0≤A,C≤23,
0≤B,D≤59
输入样例1:
7 8 9 10
输出样例1:
O JOGO DUROU 2 HORA(S) E 2 MINUTO(S)
输入样例2:
7 7 7 7
输出样例2:
O JOGO DUROU 24 HORA(S) E 0 MINUTO(S)
输入样例3:
7 10 8 9
输出样例3:
O JOGO DUROU 0 HORA(S) E 59 MINUTO(S)
// 正常思路做会出现小时、分钟两种借位的情况,
// 如果一开始就把开始结束时间先换算成分钟,就只有开始分钟数大于结束分钟数这一种情况,
// 这种情况直接在 b - a 基础上再+ 24 * 60,最后把过程分钟数转换成标准格式即可。
#include <cstdio>
int main()
{
int a, b, c, d, th, ts;
scanf("%d%d%d%d", &a, &b, &c, &d);
if (a <= c)
{
if (b <= d)
{
th = c - a;
ts = d - b;
}
else
{
if (a == c)
{
th = 23;
ts = 60 + d - b;
}
else
{
th = c - a -1;
ts = d - b + 60;
}
}
}
else
{
if (b <= d)
{
th = 24 - a + c;
ts = d - b;
}
else
{
th = 24 - a + c -1;
ts = d - b + 60;
}
}
if (th == 0 && ts == 0) th =24;
printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)\n", th, ts);
return 0;
}