洛谷 P2010 回文日期
题目描述
在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。
牛牛习惯用8位数字表示一个日期,其中,前4位代表年份,接下来2位代表月 份,最后2位代表日期。显然:一个日期只有一种表示方法,而两个不同的日期的表 示方法不会相同。
牛牛认为,一个日期是回文的,当且仅当表示这个日期的8位数字是回文的。现 在,牛牛想知道:在他指定的两个日期之间包含这两个日期本身),有多少个真实存 在的日期是回文的。
一个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。
输入输出格式
输入格式:
输入包括两行,每行包括一个8位数字。
第一行表示牛牛指定的起始日期。
第二行表示牛牛指定的终止日期。
保证date_i和都是真实存在的日期,且年份部分一定为4位数字,且首位数字不为0。
保证date1 —定不晚于date2。
输出格式:
输出一行,包含一个整数,表示在date1和date2之间,有多少个日期是回文的。
输入输出样例
输入样例#1:
20110101
20111231
输出样例#1:
1
输入样例#2:
20000101
20101231
输出样例#2:
2
说明
【样例说明】
对于样例1,符合条件的日期是20111102。
对于样例2,符合条件的日期是20011002和20100102。
【子任务】
对于60%的数据,满足date1 = date2。
解题思路
1、可以枚举范围内的所有年份,构造出相应的回文日期,再判断此日期是否合法
2、时间刚好足够,可枚举起止日期间的每一天合法日期,判断是否是回文日期
ps:判断一个数是否是回文数
低精版
bool huiwen(int x) {int num,sum=0;num=x;while(num){sum=sum*10+num%10;num/=10;}if(sum==x) return 1;else return 0; }
高精版
bool gjhuiwen(int a[],int l)//传两个值:高精数a的首地址和长度l {for(;l>=0&&a[l]==0;l--);//l好好用的话删前缀的零是没必要的for(int i=0;i<=l;i++,l--){if(a[i]!=a[l]) return false;}return true; }//这个比低精判回文那个更慢,不知道是不是电脑处理数字比处理字符串快
题解
#include<stdio.h> int qin,qiy,qir; bool hw() {int num,sum=0;int x;x=num=qir+qiy*100+qin*10000;while(num){sum=sum*10+num%10;num/=10;}if(sum==x)return 1;return 0; } int main() {int zhin,zhiy,zhir,num=0,n=0;int day[15]={0,31,29,31,30,31,30,31,31,30,31,30,31};scanf("%4d%2d%2d",&qin,&qiy,&qir);scanf("%4d%2d%2d",&zhin,&zhiy,&zhir);while(1){if(hw()&&day[qiy]>=qir) num++;qir++;if(qir>day[qiy]) qir=1,qiy++;if(qiy>12) qiy=1,qin++;if(qin>zhin) break;else if(qin==zhin){if(qiy>zhiy) break;else if(qiy==zhiy&&qir>zhir) break;}}printf("%d",num);return 0; }
洛谷 P2010 回文日期相关推荐
- Vijos P2010 回文日期【回文+日期计算】
描述 在日常生活中,通过年.月.日这三个要素可以表示出一个唯一确定的日期. 牛牛习惯用8位数字表示一个日期,其中,前4位代表年份,接下来2位代表月份,最后2位代表日期.显然:一个日期只有一种表示方法, ...
- 10.10做题——USACO1.2/洛谷1207回文平方数(Dual Palindromes)
first thing:我市杨家巷发生一起爆炸事故,死亡17人,愿逝者安息! second thing:明天NOIP初赛,RP++,排名–;分数++; third thing:好像USACO评测系统真 ...
- 洛谷P1217 回文质数
题目描述 因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围 [a,b] (5 \le a < b \le 100,000 ...
- 洛谷 - P1217 - 回文质数 - 枚举
https://www.luogu.org/problemnew/show/P1217 考虑暴力生成所有的回文数然后再判断是不是质数.注意个位的选择实际上只有4种.所以是 $4*10^3*10^3=4 ...
- 洛谷P1015回文数
题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个十进制数56,将56加65(即把5656从右向左读),得到121是一个回文数. 又如:对于十进制数 ...
- 洛谷 题解 P2010 【回文日期】
因为有8个字符,所以可得出每一年只有一个回文日期. 因此只要判断每一年就行了. 做法: 我们先把年倒过来,例如2018年就倒为8102,就得出8102就是回文日期的后四个字符,我们只要判断一下有没有这 ...
- Python案例:输出指定要求的回文日期
文章目录 一.提出任务 二.完成任务 (一)编写程序,实现功能 (二)运行程序,查看结果 一.提出任务 2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日.因为如果将 ...
- Python案例:输出公元后到目前为止全部回文日期
文章目录 一.回文日期 二.提出任务 三.完成任务 (一)涉及知识点 1.time模块 2.datetime模块 3.timedelta模块 (二)实现步骤 1.编写源代码 2.运行程序,查看结果 3 ...
- 【题解】【蓝桥杯】回文日期
题目链接 回文日期 题目描述 解题思路 首先就是日期判断,注意这个地方是日期,而不是这之间的所有数据 例如44444444这种虽说是回文串,但是并不是日期,所以需要排除 判断回文串其实不用打表,因为真 ...
- 蓝桥杯(Java) 回文日期
题目描述 2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日.因为如果将这个日期按 "yyyymmdd" 的格式写成一个 8 位数是 202002 ...
最新文章
- 查看mongodb数据路径_【数据库】mongodb数据库安装
- 大学毕业想要转行学软件测试,怎样入门比较好?
- CLR Dynamic Languages
- 做了三年Java,docker网络映射配置
- 整数线性规划实现(lingo,python分枝界定法)
- 【BZOJ3289】Mato的文件管理,莫队+树状数组
- Web Service 移除 xmlns
- Python使用多进程批量判断素数
- 怎么把代码放图片里面进行注入_揭秘代码分层后的新世界
- 劲爆!Java 通用泛型要来了。。
- 鼠标悬停在图片上出现蒙层的方法
- 大数据统计分析毕业设计_数据分析毕业设计 大数据可视化毕业设计
- 手机怎么把证件照缩小到50K以下?手机修改图片大小方法
- 实操演示 | 如何将示波器波形保存到U盘
- 怎么把好几行弄成一行_将多行内容合并成一行的两种方式
- 未封装的扩展程序是什么意思_网线上面的标识代表什么意思?网线的九大扩展应用...
- 方差、标准差、均方误差的总结
- 2018年中小型B2B或B2C网站如何突破?
- hacker黑客简介
- android 微票效果,再谈电影详情页-微票儿(每日一品v36)
热门文章
- 优化工作的冰山一角,app瘦身
- python随机抽奖程序代码_详解用python写一个抽奖程序
- java证书不见了_java – 找不到证书链
- java中成绩转换_成绩转换
- matlab中如何画零线,不接零线的教训好惨 - 通信工程设计与建设 - 通信人家园 - Powered by C114...
- SQLAlchemy基本使用
- flask常用内容:
- python php mysql_Python 操作 MySQL 的正确姿势
- RSA、DSA算法原理与举例
- 力扣题目系列:1313. 解压缩编码列表