题目描述
读取四个整数A,B,C,D,用来表示游戏的开始时间和结束时间。
其中A和B为开始时刻的小时和分钟数,C和D为结束时刻的小时和分钟数。
请你计算游戏的持续时间。
比赛最短持续1分钟,最长持续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)
解法1 C++ 代码
#include<iostream>
using namespace std;
int main() {
int a,b,c,d,X,Y;
cin>>a>>b>>c>>d;
if(a==c) {
if(b==d){
cout << "O JOGO DUROU 24 HORA(S) E 0 MINUTO(S)";
}else if(b<d) {
X=0;
Y=d-b;
cout <<"O JOGO DUROU "<<X<< " HORA(S) E "<<Y<< " MINUTO(S)";
}else {
X=24-a+c-1;
Y=60-b+d;
cout <<"O JOGO DUROU "<<X<< " HORA(S) E "<<Y<< " MINUTO(S)";
}
}
else if(a<c) {
if(b<d) {
X=c-a;
Y=d-b;
}else if(b>d){
X=c-a-1;
Y=60-b+d;
}
cout <<"O JOGO DUROU "<<X<< " HORA(S) E "<<Y<< " MINUTO(S)";
}else if (a>c){
if(b<=d) {
X=24-a+c;
Y=d-b;
}else{
X=24-a+c-1;
Y=60-b+d;
}
cout <<"O JOGO DUROU "<<X<< " HORA(S) E "<<Y<< " MINUTO(S)";
}
}
解法2 C++ 代码
解法1判断较多,如果将小时转为分钟,统一用分钟计算,判断会减少很多
#include<iostream>
using namespace std;
int main() {
int a,b,c,d,X,Y;
cin>>a>>b>>c>>d;
b+=a*60;
d+=c*60;
if(d==b) {
cout <<"O JOGO DUROU 24 HORA(S) E 0 MINUTO(S)";
}else {
if(d>b) {
X=(d-b)/60%24;
Y=(d-b)%60;
}else {
X=(24*60-b+d)/60%24;
Y=(24*60-b+d)%60;
}
cout <<"O JOGO DUROU "<<X<< " HORA(S) E "<<Y<< " MINUTO(S)";
}
}