668. 游戏时间2

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;
}

猜你喜欢

转载自blog.csdn.net/qq_42465670/article/details/115069322