传送门

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. nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理

    Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案.nginx可以用轮询.IP哈希.URL哈希等方式调度后端服务器,同时也能提供健康检查功能 ...

  2. 牛客OI赛制测试赛-序列-模拟

    哇这道题好坑啊,可能是我太菜了 题意就是叫把一个连续序列分成K组,使得每个组的和都相等 我最开始的想法是由于要分成K组,那我们知道,每组一定有sum(a[i])/k这样我们只需要每次当num==sum ...

  3. Maven -Maven配置tomcat插件 两种

    Maven Tomcat插件现在主要有两个版本,tomcat-maven-plugin和tomcat7-maven-plugin,使用方式基本相同. tomcat-maven-plugin 插件官网: ...

  4. CodeIgniter中使用base_url()时显示http://::1/ci/

    URL 辅助函数文件包含了一些帮助你处理 URL 的函数. 加载辅助函数后,你可以使用base_url(),site_url(),current_url()等一些列函数,但是有时候你会遇到这种问题,就 ...

  5. Effective C++(第三版)笔记 ---- 第一部分让自己习惯C++

    内容从侯捷译版的<Effective C++>(第三版)摘录 条款一 C++作为一个多种范式融合的语言,可以看成是语言的联邦,它包含了一下四种主要的次语言: C.C++以C为基础,很多时候 ...

  6. Typecho博客迁移

    在新的机器上先搭建好一个新的Typecho博客,数据库名称和原博客相同(可以省不少事). 备份原来博客的usr目录. 备份mysql数据库,命令: mysqldump -uroot -p --all- ...

  7. Oracle备份恢复简单过程以及中间的坑.

    Oracle 冷备: 貌似需要dbca创建一致的oracle instance 服务器配置版本尽量相同,安装路径相同. 关闭Oracle服务 将oracle app 目录下的oradata以及有快速闪 ...

  8. [转帖]召冠总的 Oracle常用的性能诊断语句. --保存学习备查

    Copyfrom https://www.cnblogs.com/zhaoguan_wang --1.阻塞及等待事件信息查询-- 查询所有会话的状态.等待类型及当前正在执行的SQL脚本select t ...

  9. leetcode:Reverse Integer 及Palindrome Number

    Reverse Integer Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, retur ...

  10. HTML DOM 節點

    節點: 整個html文檔是文檔節點: 注釋為注釋節點: 文本為文本節點: html元素為元素節點: html包含的內容為html節點. 節點間的關係: 父節點,子節點和同胞節點. html節點為根節點 ...