cpp-003Đọc toàn bộ đề miễn phí

Kiểm tra năm nhuận và số ngày trong tháng

Trong hệ thống lịch dương hiện đại (Gregorian calendar), quy tắc xác định một năm Y có phải là năm nhuận hay không được định nghĩa:

C++Cơ bản20 phút

Tiến độ của tôi ở bài này

Điểm được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

conditionalsboolean logicswitch case

Kiến thức tiên quyết: if else, logical operators.

Nội dung đề bài

Mục tiêu kiến thức

  • Rèn luyện biểu thức logic phức hợp kết hợp các toán tử &&, ||, !.
  • Áp dụng cấu trúc switch-case hoặc cấu trúc mảng tra cứu để tìm số ngày trong tháng.
  • Xử lý các ngoại lệ dữ liệu không hợp lệ.

Mô tả bài toán

Trong hệ thống lịch dương hiện đại (Gregorian calendar), quy tắc xác định một năm Y có phải là năm nhuận hay không được định nghĩa:

  • Năm Y chia hết cho 400 là năm nhuận.
  • Hoặc: Năm Y chia hết cho 4 nhưng không chia hết cho 100 là năm nhuận.
  • Các trường hợp còn lại không phải là năm nhuận.

Cho biết tháng M và năm Y. Bạn hãy viết chương trình:

  • Kiểm tra tính hợp lệ: Năm Y phải nguyên dương (Y ≥ 1) và tháng M phải nằm trong khoảng [1, 12]. Nếu không thỏa mãn, in ra màn hình: Du lieu khong hop le!
  • Nếu hợp lệ, in ra 2 dòng:
  • Dòng 1: Nam <Y> la nam nhuan hoặc Nam <Y> khong phai la nam nhuan
  • Dòng 2: Thang <M> nam <Y> co <D> ngay. (với D là số ngày trong tháng M của năm Y).

Ghi nhớ số ngày trong các tháng:

  • Tháng 1, 3, 5, 7, 8, 10, 12 có 31 ngày.
  • Tháng 4, 6, 9, 11 có 30 ngày.
  • Tháng 2 có 29 ngày nếu là năm nhuận, và 28 ngày nếu không phải năm nhuận.

Quy ước nộp bài

  • Chỉ cần viết một chương trình đọc stdin và in ra stdout. Bài này không yêu cầu viết hàm.
  • Không dùng cout để in lời nhắc trước khi đọc dữ liệu. Lời nhắc sẽ lọt vào stdout và làm bài sai.
  • Chỉ in đúng nội dung ở mục Output. Không in thêm nhãn, dòng trống hay ký tự thừa.
  • Output được so khớp từng ký tự, phân biệt chữ hoa/thường và dấu câu.

Input

Một dòng duy nhất chứa 2 số nguyên M và Y cách nhau bởi dấu cách (M: tháng, Y: năm).

Output

  • Nếu dữ liệu không hợp lệ: In Du lieu khong hop le!
  • Nếu hợp lệ: In đúng 2 dòng như mô tả.

Ràng buộc

  • -106 ≤ M, Y ≤ 106.
  • Thời gian chạy: 1000ms.
  • Bộ nhớ tối đa: 256MB.

Ví dụ 1

Input

2 2024

Output

Nam 2024 la nam nhuan
Thang 2 nam 2024 co 29 ngay.

Ví dụ 2

Input

2 1900

Output

Nam 1900 khong phai la nam nhuan
Thang 2 nam 1900 co 28 ngay.

Giải thích

Năm 1900 chia hết cho 4 và chia hết cho 100, nhưng không chia hết cho 400 nên không phải là năm nhuận.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.

Góp ý & báo lỗi bài tập

Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.