[Buổi 2][Rẽ nhánh][ADV] Bài 1: Ngày kế tiếp
Ngày kế tiếp
Bối cảnh
Một lịch điện tử nhận một ngày hợp lệ và cần hiển thị ngày ngay sau đó. Phần lớn trường hợp chỉ cần tăng ngày lên 1, nhưng ở cuối tháng phải chuyển sang tháng mới, còn ngày 31/12 phải chuyển sang năm mới.
Để giải quyết chính xác, trước tiên bạn cần xác định tháng hiện tại có bao nhiêu ngày. Riêng tháng 2 phụ thuộc vào việc năm hiện tại có phải năm nhuận hay không.
Yêu cầu
Input luôn là một ngày hợp lệ. Hãy tìm ngày ngay sau đó:
- Xác định năm hiện tại có nhuận hay không.
- Xác định số ngày của tháng hiện tại: tháng 2 có 28/29 ngày; tháng 4,6,9,11 có 30 ngày; các tháng còn lại có 31 ngày.
- Nếu
daychưa phải ngày cuối tháng, chỉ tăngdaylên 1. - Nếu là ngày cuối tháng, đưa
dayvề 1 và tăng tháng; riêng tháng 12 thì chuyển sang1/1của năm kế tiếp.
Input
Dữ liệu vào được cung cấp theo định dạng sau:
day month year.
Hãy đọc các giá trị theo đúng thứ tự và ý nghĩa đã mô tả trong đề bài.
Output
In kết quả theo đúng định dạng sau:
nextDay nextMonth nextYear.
Không in thêm lời giải thích, nhãn hoặc ký tự ngoài phần kết quả được yêu cầu.
Ràng buộc
Input luôn là ngày hợp lệ.
Ví dụ 1
Input
1 1 2026
Output
2 1 2026
Giải thích ví dụ
Ngày vào là 1/1/2026. Xác định số ngày của tháng 1 trong năm 2026, rồi kiểm tra đây có phải ngày cuối tháng hay không. Sau khi tăng đúng một ngày, ta thu được 2/1/2026, nên output là 2 1 2026.
Ví dụ 2
Input
28 2 2024
Output
29 2 2024
Giải thích ví dụ
Ngày vào là 28/2/2024. Xác định số ngày của tháng 2 trong năm 2024, rồi kiểm tra đây có phải ngày cuối tháng hay không. Sau khi tăng đúng một ngày, ta thu được 29/2/2024, nên output là 29 2 2024.
Thông tin học tập
- Buổi: B02
- Concepts: nested conditionals, leap year, month boundaries
- Giới hạn kiến thức: B01-B02
- Time limit: 1 second
- Memory limit: 256 MB
- Point: 100
Comments