NOIP 普及组 2016 回文日期
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 回文日期的更多相关文章
- 2016NOIP普及组T2回文日期
回文日期 分类:枚举,函数 [题目描述] 日常生活中,通过年.月.日这三个要素可以表示出一个唯一确定的日期. 牛牛习惯用8位数字表示一个日期,其中,前4位代表年份,接下来2位代表月份,最后2位代表日期 ...
- NOIP 2016 回文日期
洛谷P2010 https://www.luogu.org/problemnew/show/P2010 JDOJ 3313 https://neooj.com:8082/oldoj/problem.p ...
- NOIP 普及组 2016 海港
传送门 https://www.cnblogs.com/violet-acmer/p/9859003.html 这次比赛,上来还是死抠第一题,用了一个半小时才 AC,还是太菜了............ ...
- NOIP【2016普及组】 考后有感(买铅笔,回文日期,海港,魔法阵)
普及组考试已落下大幕,但我们那扑通扑通等待成绩的心仍然无法平静,先来给四道题做一个总结: 一. 买铅笔 自评难度:1星 其实这道题没有什么难度,生命之题,满分必拿,100分,保底啦~\(≧▽≦)/~ ...
- [洛谷] P2010 [NOIP2016 普及组] 回文日期
点击查看代码 #include<bits/stdc++.h> using namespace std; int data1, data2, ans = 0, sum; int d[13] ...
- 2016.8.16上午纪中初中部NOIP普及组比赛
2016.8.16上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1334 这次也翻车了,感觉比之前难多了. 辛辛苦苦改完了,太难改 ...
- 2016.8.15上午纪中初中部NOIP普及组比赛
2016.8.15上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1333 这次比赛不怎么好,因为这套题目我并不是很擅长. 可同学们 ...
- 2016.9.15初中部上午NOIP普及组比赛总结
2016.9.15初中部上午NOIP普及组比赛总结 2016.09.15[初中部 NOIP普及组 ]模拟赛 又翻车了!表示时超和空超很可恨! 进度 比赛:AC+0+0+20=120 改题:AC+80+ ...
- 2016.9.10初中部上午NOIP普及组比赛总结
2016.9.10初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1340 好不爽!翻车了!不过排名差不多在中间偏上一点, 还好不是 ...
随机推荐
- nginx的access.log文件详解
事实证明,日志文件真的是很重要很重要的.能够帮助我们快速的定位问题,并且知道用户访问的状态,浏览器,Ip,接口地址等,简直可怕.. 一.nginx的access.log(1)对博主而言,日志文件存放在 ...
- webpack详细配置解析
阅读本文之前,先看下面这个webpack的配置文件,如果每一项你都懂,那本文能带给你的收获也许就比较有限,你可以快速浏览或直接跳过:如果你和十天前的我一样,对很多选项存在着疑惑,那花一段时间慢慢阅读本 ...
- 洛谷P1004 方格取数-四维DP
题目描述 设有 N \times NN×N 的方格图 (N \le 9)(N≤9) ,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 00 .如下图所示(见样例): A 0 0 0 0 0 ...
- c++入门之关于cin,cout以及数据流的认识
- Week7阅读笔记
关于银弹: Brooks在他最著名的这篇文章里指出,在软件开发过程里是没有万能的终杀性武器的,只有各种方法综合运用,才是解决之道.而各种声称如何如何神奇的理论或方法,都不是能杀死“软件危机”这头人狼的 ...
- 我的github地址
链接:https://github.com/long0123/test.git 推送项目的github的大致步骤如下: 1.在本地创建一个项目仓库,可以放些基本的项目文件 2.cd至该目录下 3. ...
- Robot Framework 入门教程总结
Robot Framework 作为一款通用测试框架,可加载多种测试库.驱动多种测试工具,并可对各种自定义脚本进行集成.对于Robot Framework,我准备将其分为 入门--Robot Fram ...
- Jfrog Maven jenkins pipeline 流水线 培训 简单实验
1. 公司购买了一套jfrog artifactory ,然后厂商组织了一次培训 本次简单记录一下 jenkins和jfrog 二进制仓库的简单连接使用 2. 前期环境准备. scp jdk的tar包 ...
- [日常工作] SUSE设置上网ip地址
1. 同事搜到的命令 ifconfig eth0 10.24.25.8 netmask 255.255.0.0 up route add default gw 10.24.255.254 2. 修改 ...
- matplotlib绘图2
fig=plt.figure() fig.add_subplot(3,3,1)#3行3列 第一个图 n=128 X=np.random.normal(0,1,n) Y=np.random.normal ...