C5-03 · Năm nhuận

Xem dạng PDF

Gửi bài giải

Điểm: 1,00
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Nguồn bài:
Sách "Lập trình cơ sở với Python"
Dạng bài
Ngôn ngữ cho phép
Python

Đề

Viết hàm la_nam_nhuan(nam) trả về True nếu nam là năm nhuận, ngược lại trả về False, theo luật ở mục 3.3 (Ví dụ 3.5, lịch Gregory):

Năm nhuận là năm chia hết cho 400, hoặc chia hết cho 4 nhưng không chia hết cho 100.

Chương trình chính đọc T năm; với mỗi năm in YES nếu nhuận, ngược lại in NO. Hàm la_nam_nhuan sẽ được dùng lại ở bài C5-08.

Dữ liệu vào

  • Dòng đầu: số nguyên ~T~ là số năm cần kiểm tra.
  • ~T~ dòng tiếp theo, mỗi dòng một số nguyên dương là năm.

Kết quả

~T~ dòng, mỗi dòng YES hoặc NO (chữ in hoa) cho năm tương ứng, theo đúng thứ tự nhập.

Ràng buộc

  • ~1 \le T \le 1000~.
  • ~1 \le \text{nam} \le 10^9~.

Ví dụ

Dữ liệu vào:

3
2024
1900
2000

Kết quả:

YES
NO
YES

Giải thích ví dụ

Năm Chia hết cho 4? Chia hết cho 100? Chia hết cho 400? Kết luận
2024 có không không nhuận (YES)
1900 có có không không nhuận (NO)
2000 có có có nhuận (YES)

Năm 1900 là ca "chỉ một năm lộ lỗi" của mục 3.3: hàm viết vội return nam % 4 == 0 vẫn đúng với 2024 và 2000 nhưng sai ở 1900.

Ghi chú

  • Hàm trả về giá trị logic, tên bắt đầu bằng la_; lời gọi đọc như câu hỏi: if la_nam_nhuan(nam):. Viết if la_nam_nhuan: (thiếu ngoặc) thì điều kiện luôn đúng (mục 5.2.2).
  • In đúng YES/NO, không in True/False hay Yes/No.
  • Hệ thống chỉ so kết quả in ra; yêu cầu "viết hàm đúng tên, có ít nhất ba assert" là phần giảng viên kiểm khi chấm tay.

Nguồn trong sách: Bài C5-03, mục 5.10, giáo trình "Lập trình cơ sở với Python" — TS. Nguyễn Quốc Long · Mức: (*)


Đang tải...