Еще одна проблема манипулирования датами: P
задача
Напишите программу или функцию, которая вычисляет разницу между двумя датами, заданными пользователем.
Ввод, вывод
Как и в предыдущем случае , входными данными являются два YYYYMMDDs, разделенные пробелом , запятой ,или знаком минус -.
Пример входных значений:
20100101-20010911
20110620-20121223
19000101 20101010
33330101,19960229
00010101 99991231
Вывод представляет собой целое число, которое представляет собой разницу между двумя датами в днях.
Например, ввод 20110101-20100101дает 365, и 33320229 17000101дает 596124.
Вы можете проверить результаты здесь на здесь . (См. Комментарии rintaun ниже.) Если две даты совпадают, программа должна вернуться 0, если дата действительна (см. Оценка ).
ограничение
Конечно, вы не должны использовать какие-либо функции / классы / ..., связанные с отметкой времени или датой, и вам следует использовать григорианский календарь .
Гол
Если ваш код не соблюдает ограничение, тогда score = -∞.
По умолчанию bonus1.
- Если ваш код работает независимо от порядка ввода (например,
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 + 21464 года. Спасибо за информацию!