传送门

https://www.cnblogs.com/violet-acmer/p/9859003.html

题解:

 思路1:

  相关变量解释:

    year1,month1,day1 : date1对应的年、月、日

    year2,month2,day2 : date2对应的年、月、日

  这道题算是考思维+Code能力??

  易得,每一年最多有一个回文日期;

  例如 2000 的回文日期为 2000 0002

  for i : year1 to year2

    找到每个 i 的回文日期对应的月(month)、日(day),并进行两个判断

    (1):判断month,day是否合法。

    (2):判断当前日期是否在date1与date2之间

 思路2.

  枚举月和日对应的回文年份,看其回文组成的八位数是否在date1和date2内,什么意思呢?

  例如,对于01月23日,其对应的回文年份为3210,其回文组成的八位数为 32100123,在和输入的date1与date2比较,看是否在其中,如果在,Count++;

  不用特判某一年是否为闰年,为什么呢?

  某年是否为闰年只会影响 2 月的天数,2月最多有 29 天,其对应的回文年份为 9220,但9220是闰年。

  思路2来自集训队队员博客:https://blog.csdn.net/QLU_minoz/article/details/83450635

AC代码:

 #include<bits/stdc++.h>
using namespace std;
#define isSat(x) ((x) >= 1 &&(x) <= 12)//判断是否为合法的月份
#define isRun(x) ((x%4 == 0 && x%100 != 0) || (x%400 == 0))//判断是否为闰年 char data[][];
int monthDay[][]={{,,,,,,,,,,,,}, //0 : 平年
{,,,,,,,,,,,,}};//1 : 闰年 int Transform(int a,int b,int d){//将字符串对应的年、月、日转化成数子
int num=;
for(int i=a;i <= b;++i)
num=num*+(data[d][i]-'');
return num;
}
void Search(int year,char *s){
int index=;
do
{
s[index++]=year%+'';
year /= ;
}while(year != );
}
void Solve()
{
int year1=Transform(,,),month1=Transform(,,),day1=Transform(,,);
int year2=Transform(,,),month2=Transform(,,),day2=Transform(,,);
int res=;
int pre=;
for(int i=year1;i <= year2;++i)
{
char s[];
Search(i,s);//找到将当前的年份的回文
int month=(s[]-'')*+(s[]-'');//当前年份的回文对应的月
int day=(s[]-'')*+(s[]-'');//日
if(!isSat(month) || day > monthDay[isRun(i)][month])
continue;
if(year1 == year2)
{
if(month > month1 || (month == month1 && day >= day1))
{
if(month < month2 || (month == month2 && day <= day2))
res++;
}
}
else
{
if(i == year1)
res += (month > month1 || (month == month1 && day >= day1) ? :);
else if(i == year2)
res += (month < month2 || (month == month2 && day <= day2) ? :);
else//如果year1 != year2 ,且 i != year1 && i != year2 ,则当前合法的日期一定在date1和date2之间
res++;
}
}
printf("%d\n",res);
}
int main()
{
scanf("%s%s",data[],data[]);
Solve();
}

思路1

 #include<bits/stdc++.h>
using namespace std;
int date1,date2;
int monthDay[]={,,,,,,,,,,,,}; void Solve()
{
int res=;
for(int i=;i <= ;++i)//枚举月份
for(int j=;j <= monthDay[i];++j)//枚举每月对应的日
{
int year=j%*+j/*+i%*+i/;//当前月,日对应的回文年份
int cnt=year*+i*+j;//回文日期对应的八位数
res += (cnt >= date1 && cnt <= date2 ? :);
}
printf("%d\n",res);
}
int main()
{
scanf("%d%d",&date1,&date2);
Solve();
}

思路2

NOIP 普及组 2016 回文日期的更多相关文章

  1. 2016NOIP普及组T2回文日期

    回文日期 分类:枚举,函数 [题目描述] 日常生活中,通过年.月.日这三个要素可以表示出一个唯一确定的日期. 牛牛习惯用8位数字表示一个日期,其中,前4位代表年份,接下来2位代表月份,最后2位代表日期 ...

  2. NOIP 2016 回文日期

    洛谷P2010 https://www.luogu.org/problemnew/show/P2010 JDOJ 3313 https://neooj.com:8082/oldoj/problem.p ...

  3. NOIP 普及组 2016 海港

    传送门 https://www.cnblogs.com/violet-acmer/p/9859003.html 这次比赛,上来还是死抠第一题,用了一个半小时才 AC,还是太菜了............ ...

  4. NOIP【2016普及组】 考后有感(买铅笔,回文日期,海港,魔法阵)

    普及组考试已落下大幕,但我们那扑通扑通等待成绩的心仍然无法平静,先来给四道题做一个总结: 一. 买铅笔 自评难度:1星 其实这道题没有什么难度,生命之题,满分必拿,100分,保底啦~\(≧▽≦)/~ ...

  5. [洛谷] P2010 [NOIP2016 普及组] 回文日期

    点击查看代码 #include<bits/stdc++.h> using namespace std; int data1, data2, ans = 0, sum; int d[13] ...

  6. 2016.8.16上午纪中初中部NOIP普及组比赛

    2016.8.16上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1334 这次也翻车了,感觉比之前难多了. 辛辛苦苦改完了,太难改 ...

  7. 2016.8.15上午纪中初中部NOIP普及组比赛

    2016.8.15上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1333 这次比赛不怎么好,因为这套题目我并不是很擅长. 可同学们 ...

  8. 2016.9.15初中部上午NOIP普及组比赛总结

    2016.9.15初中部上午NOIP普及组比赛总结 2016.09.15[初中部 NOIP普及组 ]模拟赛 又翻车了!表示时超和空超很可恨! 进度 比赛:AC+0+0+20=120 改题:AC+80+ ...

  9. 2016.9.10初中部上午NOIP普及组比赛总结

    2016.9.10初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1340 好不爽!翻车了!不过排名差不多在中间偏上一点, 还好不是 ...

随机推荐

  1. PHP 文件写入和读取(必看篇)

    文章提纲: 一.实现文件读取和写入的基本思路 二.使用fopen方法打开文件 三.文件读取和文件写入操作 四.使用fclose方法关闭文件 五.文件指针的移动 六.Windows和UNIX下的回车和换 ...

  2. Linux内核分析作业第六周

    创建新进程的过程 一.进程的描述 为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息. 1.进程控制块PCB——task_struct 操作系统的三大管理功能 进程 ...

  3. 网易云课堂-----Linux内核分析-----期末主观题

    姚歌 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 下面是对8个课题的 ...

  4. Spring.Net快速入门:控制翻转、依赖注入、面向切面编程

    Spring.Net主要功能: 1.IoC:控制翻转(Inversion of Control)  理解成抽象工厂翻转控制:就是创建对象的权利由开发人员自己控制New,转到了由容器来控制. 2.DI: ...

  5. Tomcat启动失败

    前景:使用的是tomcat9.0,配置好后,使用一切正常,刷慕课跟着做练习,也一切正常.出事在于,老师为了方便直接拷之前写的一个项目,我照做了,老师改了虚拟路径了,我忘记改了,然后跑了一下项目就出毛病 ...

  6. Beta阶段敏捷冲刺一

    一.举行站立式会议 1.当天站立式会议照片一张 2.团队成员报告 林楚虹 (1) 昨天已完成的工作:查找连接数据库有关资料,请教在上一轮已经连接成功的同学 (2) 今天计划完成的工作:连接上数据库 ( ...

  7. Tomcat7注册为Linux服务

    https://www.openprogrammer.info/2015/06/14/how-to-install-java-8-and-tomcat-8-on-centos-6-as-service ...

  8. Jenkins 安装简记录

    下载jenkins.war,放入tomcat 启动tomcat,如果console报错java.lang.OutOfMemoryError: PermGen space,则修改startup.bat( ...

  9. Docker-Compose 安装

    1. 什么是Docker-Compose Compose项目来源于之前的fig项目,使用python语言编写,与docker/swarm配合度很高. Compose 是 Docker 容器进行编排的工 ...

  10. 好文章之——PHP系列(一)

    注:最近实习的公司是一家做电商企业,后台主要是php开发,好久不怎么接触php的我看了几篇相关文章,提高下对它的认识与理解,发现里面的学习思路还是非常好的,当然也会重新拾一下基础知识啦! 其实自己心中 ...