Еще одна проблема манипулирования датами: P
задача
Напишите программу или функцию, которая вычисляет разницу между двумя датами, заданными пользователем.
Ввод, вывод
Как и в предыдущем случае , входными данными являются два YYYYMMDD
s, разделенные пробелом , запятой
,
или знаком минус -
.
Пример входных значений:
20100101-20010911
20110620-20121223
19000101 20101010
33330101,19960229
00010101 99991231
Вывод представляет собой целое число, которое представляет собой разницу между двумя датами в днях.
Например, ввод 20110101-20100101
дает 365
, и 33320229 17000101
дает 596124
.
Вы можете проверить результаты здесь на здесь . (См. Комментарии rintaun ниже.) Если две даты совпадают, программа должна вернуться 0
, если дата действительна (см. Оценка ).
ограничение
Конечно, вы не должны использовать какие-либо функции / классы / ..., связанные с отметкой времени или датой, и вам следует использовать григорианский календарь .
Гол
Если ваш код не соблюдает ограничение, тогда score = -∞
.
По умолчанию bonus
1.
- Если ваш код работает независимо от порядка ввода (например,
20100101,20110101
возвращает365
или-365
)bonus+=1
,. - Если ваш код может работать с 0 года ,
bonus+=0.5
. - Если ваш код распознает недопустимый месяц (от 1 до 12) / дату (от 1 до 31), например
20109901
или34720132
, и печатаетE
(& завершает программу или возвращает что-то подобное0
)bonus+=1
,. - Независимо от вышеприведенного правила, если ваш код распознает недопустимые даты, например
20100230
,20100229
или20111131
, и печатаетE
(& завершает программу или возвращает что-то подобное0
)bonus+=1
,. - Независимо от вышеупомянутых двух правил, если ваш код распознает недопустимую входную строку, например
20100101|20100202
или2010010120100202
, и печатаетE
(& завершает программу или возвращает что-то подобное0
)bonus+=1
,.
score = floor(-4.2*code.length/bonus)
, Код с наибольшим количеством очков выигрывает. Если два верхних кода имеют одинаковое количество очков, выигрывают коды с наибольшим бонусом. Если два верхних кода имеют одинаковый счет и бонус, выигрывают коды с наибольшим количеством голосов.
(Должно быть: когда есть более 5 кодов, у которых больше (или равно) +1
голосов.)
20040229
. : P
365*4 + 2 + 2
1464 года. Спасибо за информацию!