U509233 小码猿的回文日期挑战

题目描述

小码猿最近学到了回文数的概念,他觉得非常有趣。于是,他设计了一个任务:找出两个日期之间所有是回文的日期。 小码猿的日期表示方式是一个 8 位字符串,前 4 位表示年份,接下来 2 位表示月份,最后 2 位表示日期。一个日期是回文的,当且仅当这个从左往右读和从右往左读完全相同。 比如: * 日期20161119(2016 年 11 月 19 日)不是回文的。 * 日期20100102(2010 年 1 月 2 日)是回文的。 * 日期20101002(2010 年 10 月 2 日)不是回文的。 小码猿知道: * 一年有 12 个月,每个月的天数如下: * 31 天:1 月、3 月、5 月、7 月、8 月、10 月、12 月 * 30 天:4 月、6 月、9 月、11 月 * 闰年的 2 月有 29 天,平年的 2 月有 28 天。 * 判断闰年的规则: * 一个年份是 4 的倍数但不是 100 的倍数,或者是 400 的倍数时,为闰年。 现在,小码猿想知道,在他指定的两个日期之间(包括起始日期和终止日期),有多少个真实存在的日期是回文的。

输入格式

输入共两行: - 第一行:一个 8 位字符串,表示小码猿指定的起始日期。 - 第二行:一个 8 位字符串,表示小码猿指定的终止日期。 保证: - 两个日期均为真实存在的日期。 - 日期的年份部分一定是 4 位数字,且首位数字不为 0。 - 起始日期一定不晚于终止日期。

输出格式

输出一行,包含一个整数,表示在指定日期范围内,有多少个日期是回文的。

说明/提示

【输入输出样例 1 说明】 符合条件的日期是 20111102。 【输入输出样例 2 说明】 符合条件的日期是 20011002 和 20100102 。