

Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
Ý tưởng:
- Tính chênh lệch múi giờ giữa hai múi giờ
- Nếu múi giờ `a` lớn hơn múi giờ `b` thì h -= số giờ chênh lệch (bởi vì múi giờ cần đổi bé hơn múi giờ gốc nên ta trừ)
- Nếu múi giờ `a` bé hơn múi giờ `b` thì h += số giờ chênh lệch (bởi vì múi giờ cần đổi lớn hơn múi giờ gốc nên ta cộng)
- Sau khi thực hiện thao tác cộng/trừ, nếu số giờ < 0 thì ta lấy số giờ chênh lệch - số giờ ban đầu rồi gán `h = 24` - số giờ chênh lệch
- Nếu số giờ > 23 thì trừ đi 24
Code:
#include <bits/stdc++.h>
using namespace std;
int max(int a, int b) {
return (a > b) ? a : b;
}
int min(int a, int b) {
return (a < b) ? a : b;
}
int main() {
int h, m, a, b;
cin >> h >> m >> a >> b;
int tmp = h;
int _max = max(a, b);
int _min = min(a, b);
int distance = _max - _min;
if (a > b) {
h -= distance;
} else if (b > a) {
h += distance;
}
if (h < 0) {
distance -= tmp;
h = 24 - distance;
} else if (h > 23) {
h -= 24;
}
cout << h << " " << m;
return 0;
}
Hãy giúp mọi người biết câu trả lời này thế nào?

Bảng tin