Đề bài
Return the number of days in month of year in the Gregorian calendar. February has 29 days in a leap year: years divisible by 4, except those divisible by 100 unless also divisible by 400. A helper function is_leap(year) keeps the code tidy.
Implement days_in_month(year, month).
Input
year: The year. month: The month, 1 (January) to 12 (December).
Output
Return the number of days.
Ràng buộc
1 ≤ year ≤ 9,999; 1 ≤ month ≤ 12
Ví dụ
Đầu vào:
year = 2024
month = 2
Kết quả mong đợi:
expected = 29
Đầu vào:
long long year = 2024;
long long month = 2;
Kết quả mong đợi:
long long expected = 29;
Đầu vào:
long year = 2024;
long month = 2;
Kết quả mong đợi:
long expected = 29;
Giải thích
2024 is divisible by 4 and not by 100, so it is a leap year: 29 days.
Đầu vào:
year = 1900
month = 2
Kết quả mong đợi:
expected = 28
Đầu vào:
long long year = 1900;
long long month = 2;
Kết quả mong đợi:
long long expected = 28;
Đầu vào:
long year = 1900;
long month = 2;
Kết quả mong đợi:
long expected = 28;
Giải thích
1900 is divisible by 100 but not 400, so it is not a leap year: 28 days.
Hướng tiếp cận
Hãy tự thử trước, sau đó mở từng gợi ý một.
Gợi ý 1
Hầu hết các tháng có số ngày cố định; riêng tháng 2 phụ thuộc vào năm nhuận.
Gợi ý 2
Dùng một bảng tra nhỏ cho số ngày mỗi tháng, rồi điều chỉnh tháng 2 theo quy tắc năm nhuận.
Gợi ý 3
Cẩn thận với các năm thế kỷ: chia hết cho 100 chưa đủ, còn phải chia hết cho 400.
Độ phức tạp mong đợi
thời gian O(1), bộ nhớ phụ O(1)
Tham khảo
Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.