Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Days in a Month

Return how many days a month has, including leap years.

Bạn sẽ học được gì

  • Ánh xạ tháng sang số ngày
  • Dùng lại quy tắc năm nhuận
  • Chia logic thành các hàm nhỏ

Đề 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ụ

Ví dụ 1
Đầ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.

Ví dụ 2
Đầ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.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.