Dữ liệu đầu vào là 1 chuỗi viết theo định dạng sau: ngày/tháng/năm, trong đó:
ngày là một số nguyên dương >= 1 và <=31
tháng là một số nguyên dương >=1 và <=12
năm là một số nguyên dương >=1 và <=10000
Yêu cầu: Xuất ra 2 dòng
Dòng 1: xác định năm này có phải là năm nhuận hay không?
Nếu năm nhuận thì ghi là YES
Ngược lại ghi là NO
Dòng 2: kết quả phép toán: ngày + tháng + năm, ghi theo cấu trúc:
Ngày+tháng+năm=KếtQuả
Ví dụ:
Input:
28/5/2015
Output:
NO
28+5+2015=2048
Ghi chú: cách xác định năm nhuận: năm nhuận là năm chia hết cho 400 hoặc chia hết cho 4 mà không chia hết cho 100
Ví dụ:
Năm 1800 không phải là năm nhuận
Năm 2000 là năm nhuận
Mình vẫn thấy có gì đó k logic. Năm chia hết cho 400 hoặc chia hết cho 4 mà không chia hết cho 100.
Năm chia hết cho 400 thì tất nhiên là chia hết cho 4 rồi, còn chia hết cho 4 mà không chia hết cho 100 là những năm mà số của nó chia hết cho 4 còn lại (những năm không chia hết cho 400). Một số chia hết cho 400 là một số vừa chia hết cho 4 vừa chia hết cho 100 đúng không nhỉ ?
Ừ vì 1800 nó chia hết cho 400, còn 1900 nó chia hết cho 4 mà không chia hết cho 100 (Theo như điều kiện logic của bài toán :)))
Điều kiện là (n chia hết cho 4) hoặc (n chia hết cho 4 mà không chia hết cho 100) mà :v Thỏa 1 trong 2 điều kiện trên máy sẽ trả kết quả là TRUE :))
##Lịch Gregorius
Theo lịch Gregorius - loại lịch tiêu chuẩn hiện nay được dùng trên hầu khắp thế giới thì những năm nào chia hết cho 4 được coi là năm nhuận. Trong năm nhuận, tháng 2 có 29 ngày thay cho 28 ngày. Cứ 4 năm lại thêm 1 ngày vào lịch bởi vì một năm dương lịch dài khoảng 365 ngày và 6 giờ.Ngoài ra, vẫn có một số ngoại lệ đối với nguyên tắc này vì một năm dương lịch ngắn hơn 365,25 ngày một chút. Những năm chia hết cho 100 chỉ được coi là năm nhuận nếu chúng cũng chia hết cho 400. Ví dụ, 1600 và 2000 là các năm nhuận nhưng 1700, 1800 và 1900 không phải năm nhuận. Tương tự như vậy, 2100, 2200, 2300, 2500, 2600, 2700, 2900 và 3000 không phải năm nhuận nhưng 2400 và 2800 là các năm nhuận.
Theo nguyên tắc này thì trung bình một năm có 365 + 1/4 − 1/100 + 1/400 = 365,2425 ngày, tức là 365 ngày 5 giờ 49 phút và 12 giây. Lý do nằm sau quy tắc này như sau:Lịch Gregory được tạo ra để đảm bảo ngày xuân phân ở châu Âu rơi vào ngày 21 tháng 3, để đảm bảo ngày lễ Phục Sinh có thể điều chỉnh theo ngày xuân phân một cách rõ ràng hơn.Một năm xuân phân (tính giữa hai điểm xuân phân kế tiếp nhau) là khoảng 365,242375 ngày.Quy tắc tính năm nhuận theo lịch Gregory lấy một năm trung bình là 365,2425 ngày.
Sự sai khác rất nhỏ này (trên 0,0001 ngày) có nghĩa là sai số thời gian sẽ tích lũy đủ một ngày trong khoảng 8.000 năm. Nhưng trong thời gian của 8.000 năm thì độ dài của một năm xuân phân cũng sẽ thay đổi theo một lượng mà người ta không thể dự báo chính xác trước (xem dưới đây). Vì thế quy tắc tính năm nhuận của lịch Gregory là đủ thỏa mãn.
Nói chung mình thấy điều kiện logic của bài toán có vấn đề, nếu mình là cái máy tính thực hiện thuật toán này thì khi gặp năm 1900 mình vẫn sẽ trả giá trị là TRUE do nó vẫn chia hết cho 4
tiên đề mà bạn biết có vấn đề thôi, chứ logic của bạn thì không có vấn đề gì cả.
1900 chia hết cho 100 nên nó không thỏa đó bạn. nếu nó có dạng xx00 thì nó phải chia hết cho 400 thì nó mới là năm nhuận.
Ngoài ra, vẫn có một số ngoại lệ đối với nguyên tắc này vì một năm dương lịch ngắn hơn 365,25 ngày một chút. Những năm chia hết cho 100 chỉ được coi là năm nhuận nếu chúng cũng chia hết cho 400. Ví dụ, 1600 và 2000 là các năm nhuận nhưng 1700, 1800 và 1900 không phải năm nhuận. Tương tự như vậy, 2100, 2200, 2300, 2500, 2600, 2700, 2900 và 3000 không phải năm nhuận nhưng 2400 và 2800 là các năm nhuận.
Theo nguyên tắc này thì trung bình một năm có 365 + 1/4 − 1/100 + 1/400 = 365,2425 ngày, tức là 365 ngày 5 giờ 49 phút và 12 giây. Lý do nằm sau quy tắc này như sau:Lịch Gregory được tạo ra để đảm bảo ngày xuân phân ở châu Âu rơi vào ngày 21 tháng 3, để đảm bảo ngày lễ Phục Sinh có thể điều chỉnh theo ngày xuân phân một cách rõ ràng hơn.Một năm xuân phân (tính giữa hai điểm xuân phân kế tiếp nhau) là khoảng 365,242375 ngày.Quy tắc tính năm nhuận theo lịch Gregory lấy một năm trung bình là 365,2425 ngày.