Hướng dẫn giải của Chênh lệch múi giờ

Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người làm lời giải.


Nộp code mẫu trước khi tự giải được bài tập là một hành vi có thể bị ban.

Tác giả: haruxne

Gọi $k = B - A$ là khoảng chênh lệch của hai múi giờ GMT $A$ và GMT $B$.

Ta có: $H' = H + k$; $M' = M$. Có thể chia bài toán thành hai trường hợp:

Trường hợp 1: $ 0 \leq H' \leq 23$:

  • Dễ thấy, kết quả của bài toán là $H'$ giờ $M'$ phút, ta không cần xử lý gì thêm.

Trường hợp 2:

  • Với $H' < 0$, ta cộng thêm 24 vào $H'$.
  • Ngược lại, với $H' \geq 24$, ta trừ đi 24 vào $H'$.

Bài toán này cũng có thể giải với một cách ngắn gọn hơn đó là sử dụng toán đồng dư. Khi đó, $H' = (H + k + 24)\mod 24$.

Code tham khảo của haruxne
void solve(){
    h += b - a + 24;
    h %= 24;
    cout << h << ' ' << m;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.