Một vấn đề thao túng ngày tháng khác: P
Bài tập
Viết chương trình hoặc hàm tính toán chênh lệch giữa hai ngày do người dùng cung cấp.
Đầu ra đầu vào
Tương tự như trước , các đầu vào là hai YYYYMMDD
s, được phân tách bằng dấu cách
,
, dấu phẩy hoặc dấu trừ -
.
Ví dụ về các giá trị đầu vào:
20100101-20010911
20110620-20121223
19000101 20101010
33330101,19960229
00010101 99991231
Đầu ra là một số nguyên, là sự khác biệt giữa hai ngày, tính theo ngày.
Ví dụ, 20110101-20100101
sản lượng đầu vào 365
, và 33320229 17000101
sản lượng 596124
.
Bạn có thể kiểm tra kết quả ở đây tại đây . (Xem bình luận của rintaun bên dưới.) Nếu hai ngày giống nhau, chương trình sẽ trả về 0
, nếu ngày đó hợp lệ (xem Điểm ).
Sự hạn chế
Tất nhiên, bạn phải không sử dụng bất kỳ loại chức năng / lớp / ... có liên quan đến dấu thời gian hoặc ngày, và bạn nên sử dụng lịch Gregorian .
Ghi bàn
Nếu mã của bạn không giữ hạn chế, thì score = -∞
.
Mặc định bonus
là 1.
- Nếu mã của bạn hoạt động bất kể thứ tự đầu vào (ví dụ,
20100101,20110101
trả về365
hoặc-365
) ,bonus+=1
. - Nếu mã của bạn có thể xử lý năm 0 ,
bonus+=0.5
. - Nếu mã của bạn nhận ra tháng không hợp lệ (trong khoảng từ 1 ~ 12) / ngày (trong khoảng từ 1 ~ 31), thích
20109901
hoặc34720132
và inE
(& chấm dứt chương trình hoặc trả về một cái gì đó như0
) ,bonus+=1
. - Bất kể quy tắc trên, nếu mã của bạn nhận ra số ngày không hợp lệ, giống như
20100230
,20100229
hoặc20111131
, và inE
(& chấm dứt chương trình hoặc trở về một cái gì đó giống như0
),bonus+=1
. - Bất kể hai quy tắc trên, nếu mã của bạn nhận ra chuỗi đầu vào không hợp lệ, như
20100101|20100202
hoặc2010010120100202
và inE
(& chấm dứt chương trình hoặc trả về một cái gì đó như0
) ,bonus+=1
.
score = floor(-4.2*code.length/bonus)
. Mã có số điểm cao nhất sẽ thắng. Nếu hai mã hàng đầu có cùng số điểm, thì mã có tiền thưởng cao nhất sẽ thắng. Nếu hai mã hàng đầu có cùng số điểm và tiền thưởng, thì mã có số phiếu cao nhất sẽ thắng.
(Đến hạn: Khi có nhiều hơn 5 mã có nhiều hơn (hoặc bằng) +1
phiếu bầu.)
20040229
. : P
365*4 + 2 + 2
= 1464. Cảm ơn thông tin!