描述

在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。

牛牛习惯用8位数字表示一个日期,其中,前4位代表年份,接下来2位代表月份,最后2位代表日期。显然:一个日期只有一种表示方法,而两个不同的日期的表示方法不会相同。

牛牛认为,一个日期是回文的,当且仅当表示这个日期的8位数字是回文的。现在,牛牛想知道:在他指定的两个日期之间(包含这两个日期本身),有多少个真实存在的日期是回文的。

格式

输入格式

输入包括两行,每行包括一个8位数字。

第一行表示牛牛指定的起始日期date1。

第二行表示牛牛指定的终止日期date2。

保证date1和date2都是真实存在的日期,且年份部分一定为4位数字,且首位数字不为0。

保证date1—定不晚于date2。

输出格式

输出一行,包含一个整数,表示在date1和date2之间,有多少个日期是回文的。

样例1

样例输入1

20110101
20111231

样例输出1

1

样例2

样例输入2

20000101
20101231

样例输出2

2

限制

【子任务】

对于60%的数据,满足date1 = date2。

提示

一个8位数字是回文的,当且仅当对于所有的i (1 <=i<= 8)从左向右数的第i个数字和第9-i个数字(即从右向左数的第i个数字)是相同的。

例如:

  • 对于2016年11月19日,用8位数字20161119表示,它不是回文的。
  • 对于2010年1月2日,用8位数字20100102表示,它是回文的。
  • 对于2010年10月2日,用8位数字20101002表示,它不是回文的。

每一年中都有12个月份:

其中,1、3、5、7、8、10、12月每个月有31天;4、6、9、11月每个月有30天;而对于2月,闰年时有29天,平年时有28天。

一个年份是闰年当且仅当它满足下列两种情况 其中的一种

  1. 这个年份是4的整数倍,但 不是 100的整数倍;
  2. 这个年份是400的整数倍。

例如:

  • 以下几个年份都是闰年:2000、2012、2016。
  • 以下几个年份是平年:1900、2011、2014。

【样例说明】

对于样例1,符合条件的日期是20111102。

对于样例2,符合条件的日期是20011002和20100102。

来源

NOIP 2016 普及组 第二题

问题链接:Vijos P2010 回文日期

问题分析

算出指定日期期间的所有日期,判断是否是回文并且进行计数即可。

程序说明

函数isPalindrome()用来判定一个日期是否是回文。

函数nextday()用于计算下一个日期。

题记

封装功能很重要。

参考链接:(略)

AC的C++程序如下:

#include <iostream>using namespace std;int mdays[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};// 闰年计算函数
int leapyear(int year) {return ((year%4 == 0 && year%100 != 0) || year%400 == 0) ? 1 : 0;
}long nextday(long date)
{int year = date / 10000, month = (date / 100) % 100, day = date % 100;if((month == 2 && day == (mdays[month] + leapyear(year))) || (month != 2 && day == mdays[month])) { //一个月完了month++, day = 1;if(month == 13)year++, month = 1;} elseday++;return (long)year * 10000 + month * 100 + day;
}// 函数功能:判断n是否为回文数
// 参数n:需要判断是否为回文数的数
bool isPalindrome(long n)
{long temp1 = n, temp2 = 0;while(n > 0) {temp2 = temp2 * 10 + n % 10;n /= 10;}return temp1 == temp2;
}int main()
{long startdate, enddate;cin >> startdate >> enddate;int count = 0;while(startdate <= enddate) {if(isPalindrome(startdate))count++;startdate = nextday(startdate);}cout << count << endl;return 0;
}

Vijos P2010 回文日期【回文+日期计算】相关推荐

  1. 回文树(回文自动机) - URAL 1960 Palindromes and Super Abilities

     Palindromes and Super Abilities Problem's Link:  http://acm.timus.ru/problem.aspx?space=1&num=1 ...

  2. 回文树/回文自动机 引入

    回文树/回文自动机引入 在介绍这种数据结构之前,我们来回顾一下处理字符串的一些武器: 1.KMP.AC自动机 2.后缀三姐妹(后缀树,后缀数组,后缀自动机) 3.字符串hash 4.字符串dp 5.m ...

  3. 更新域内计算机时间,Word2013如何自动更新文档中的日期和时间?如何设置打印前自动更新域...

    在Word2013文档中插入日期和时间,如何实现自动更新,下面小编就给大家介绍一下Word2013中自动更新文档中的日期和时间的方法,而且,使用这个办法还可以插入会自动更新的时间,最后,还给大家分享了 ...

  4. 一文告诉你Java日期时间API到底有多烂

    前言 你好,我是A哥(YourBatman). 好看的代码,千篇一律!难看的代码,卧槽卧槽~其实没有什么代码是"史上最烂"的,要有也只有"史上更烂". 日期是商 ...

  5. 输入一个字符串,判断其是否是回文。(回文:即正读和反读都一样,如abccba, abccba)

    输入一个字符串,判断其是否是回文.(回文:即正读和反读都一样,如abccba, abccba) 这里讨了个巧用了strcmp函数 注:strcmp用法: 字符串比较函数,一般形式为strcmp(字符串 ...

  6. 一文搞定Mysql日期时间函数

    总第184篇/张俊红 日期和时间函数部分也是我们日常工作中使用频率比较高的一部分.这一篇我们主要讲讲Mysql里面的日期时间相关的函数,不同数据库之间基本相同,只会有个别函数的差异.大家掌握一个数据库 ...

  7. sql中当前日期加2个月_一文搞定Mysql日期时间函数

    总第184篇/张俊红 日期和时间函数部分也是我们日常工作中使用频率比较高的一部分.这一篇我们主要讲讲Mysql里面的日期时间相关的函数,不同数据库之间基本相同,只会有个别函数的差异.大家掌握一个数据库 ...

  8. oracle显示当天日期函数,oracle日期函数

    oracle日期函数 1.日期时间间隔操作  当前时间减去7分钟的时间 select sysdate,sysdate - interval '7' MINUTE from dual 当 ...

  9. java日期时间转日期_Java时间和日期指南

    java日期时间转日期 长期以来,正确处理日期,时间,时区,夏令时,and年等一直是我的烦恼. 本文并不是一个全面的指南时域,请参阅日期和时间在Java中 -更详细,但略有下降,ekhem,日期. 它 ...

最新文章

  1. 面试热点|理解TCP/IP传输层拥塞控制算法
  2. 【原创翻译】如何命名变量
  3. Ubuntu16.04 安装谷歌浏览器并配置常用插件与扩展
  4. 程序员修神之路--略懂数据库集群读写分离而已
  5. 牛客 共鸣问题(思维难题)
  6. [随笔重写] Python3 的深拷贝与浅拷贝
  7. linux oracle显示乱码,Linux下oracle显示乱码解决
  8. python二进制转十进制代码_python二进制转十六进制代码
  9. TURBOMAIL邮件服务器—挽救错误邮件
  10. YCbCr空间中进行色彩调整的方法
  11. OpenCore引导配置说明第十五版-基于OpenCore-0.6.8-04-06正式版
  12. 如何把大写金额变为小写数字_如何将小写金额转换为大写金额?这几个公式你至少要学会一个……...
  13. 服务器开启虚拟化有什么好处
  14. python计算图像面积_利用图像处理计算叶片面积
  15. Vue.js与Node.js一起打造一款属于自己的音乐App(收藏)
  16. 水泊梁山迎圣诞,Python 抽奖助好汉
  17. qt、adb、小米屏幕滑动demo
  18. 教你用python画一个可爱皮卡丘!
  19. python获取主板序列号_LabVIEW获取主板序列号和硬盘序列号以进行软件加密
  20. Android OpenGL ES 应用(一)

热门文章

  1. 走在网页游戏开发的路上
  2. CAsyncSocket使用总结
  3. matlab线性代数命令大全,线性代数 - MATLAB 系统中文帮助手册
  4. 扫地机器人单扫和双扫_618买扫地机器人前必看 别图便宜 小心入坑!
  5. 【自我救赎--牛客网Top101 4天刷题计划】 第四天 登峰造极
  6. 广州电子厂房净化工程_医药厂房净化车间工程验收,怎么测定风速风量和换气次数?...
  7. SQL 基础面试题(四)
  8. Scala初步学习(二)
  9. Kafka核心概念及核心机制
  10. html如何隐藏盒子的边框线,用DIV和CSS做一个实线边框的红色盒子