笨办法
#include <cstdio>
using namespace std;
int main()
{
int a, b, c, d, x, y;
scanf("%d%d%d%d", &a, &b, &c, &d);
if (a > c)
{
if (b <= d)
{
x = (24 - a) + c;
y = d - b;
}
else
{
x = (24 - a) + c - 1;
y = 60 - b + d;
}
}
else if (a == c)
{
if (b > d)
{
x = c - a + 23;
y = d - b + 60;
}
else if (b < d)
{
x = 0;
y = d -b;
}
else
{
x = 24;
y = 0;
}
}
else
{
if (b <= d)
{
x = c - a;
y = d - b;
}
else
{
x = c - a - 1;
y = 60 - b + d;
}
}
printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)\n", x, y);
return 0;
}
这是抄大佬的,想法是差不多的
目的就是 c-a(小时相减) , d-b(分钟相减),分钟不够小时补
#include <iostream>
using namespace std;
int main()
{
int a, b, c, d;
cin >> a >> b >> c >> d;
if(d < b) c -= 1,d += 60; // 分钟数不够减,借小时,补60分钟
if(c < a) c += 24;
if(c - a == 0 && d - b == 0) c += 24; // 特判,这种情况表示过了一天
printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)",c-a,d-b);
return 0;
}
作者:繁花似锦
链接:https://www.acwing.com/solution/content/12423/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
先化小时为分钟进行运算,在化分钟为小时
#include <iostream>
using namespace std;
int main()
{
int a, b, c, d,x1, x2;
cin >> a >> b >> c >> d;
x1 = a * 60 + b;
x2 = c * 60 + d;
int x = 0, minute = 0;
int y = minute2 - minute1;
if(dec == 0)
{
x = 24;
y = 0;
}
else
{
x = (dec + 24 * 60) % (24 * 60) / 60;
y = (dec + 24 * 60) % (24 * 60) % 60;
}
printf("O JOGO DUROU %d HORA(S) E %d MINUTO(S)\n", x, y);
return 0;
}