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:
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ếtif 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 inTrue/FalsehayYes/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...