P2010 回文日期 题解
这题其实就是纯暴力,暴力,再暴力,毫无技巧可言(总之您怎么乱搞都不会超时QAQ)
首先,根据题意,我们明白每年自多产生一个回文日期,因为对于每年的三百多天,前四位是固定的。
所以,我们只需要进行一个从date1到date2之间的循环枚举,通过前四位找到后四位,再判断这八位数是否回文即可。
特别注意:
①:(其实题目里有讲)
一个年份是闰年当且仅当它满足下列两种情况其中的一种:
1.这个年份是4的整数倍,但不是100的整数倍;
2.这个年份是400的整数倍;
②:看到有些神犇的代码里对于“92200229”这个日期进行了特判,其实本蒟蒻感觉不需要,因为这个2月29日和9220年的条件不矛盾;
③:闰年2月有29日。
别问我这恶心的代码是怎么打出来的……
代码:
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int s[],e[],sum;
bool run(int need)
{
if (need%==&&need%!=) return true;
else if (need%==) return true;
else return false;
}
int main()
{
for (int i=;i<=;i++) scanf("%1d",&s[i]);
for (int i=;i<=;i++) scanf("%1d",&e[i]);
#define __const__ s[1]*1000+s[2]*100+s[3]*10+s[4]
#define ___const___ e[1]*1000+e[2]*100+e[3]*10+e[4]
for (int i= __const__;i<=___const___;i++)
{
int cmp[]={,i/,i%/,i%/,i%,i%,i%/,i%/,i/};
if (!(cmp[]==cmp[]&&cmp[]==cmp[]&&cmp[]==cmp[]&&cmp[]==cmp[])) continue;
#define _const_ cmp[5]*10+cmp[6]
#define CONST cmp[7]*10+cmp[8]
if (_const_>||_const_<) continue;
if (CONST>||CONST<) continue;
if ((_const_==||_const_==||_const_==||_const_==||_const_==||_const_==||_const_==)&&CONST>) continue;
if ((_const_==||_const_==||_const_==||_const_==)&&(CONST>)) continue;
if ((_const_==&&CONST>&&run(cmp[]*+cmp[]*+cmp[]*+cmp[]))) continue;
if ((_const_==&&CONST>&&!run(cmp[]*+cmp[]*+cmp[]*+cmp[]))) continue;
if (i==___const___&&(_const_>e[]*+e[]||(_const_==e[]*+e[]&&CONST>e[]*+e[]))) continue;
if (i==__const__&&(_const_<s[]*+s[]||(_const_==s[]*+s[]&&CONST<s[]*+s[]))) continue;
sum++;
}
printf("%d\n",sum);
return ;
}
P2010 回文日期 题解的更多相关文章
- 洛谷 P2010 回文日期 题解
P2010 回文日期 题目描述 在日常生活中,通过年.月.日这三个要素可以表示出一个唯一确定的日期. 牛牛习惯用88位数字表示一个日期,其中,前44位代表年份,接下来22位代表月 份,最后22位代表日 ...
- P2010 回文日期
P2010 回文日期 题解 回文日期,一共8位,只需要枚举4位就好了其实,然后判断它是否合法 代码 #include<bits/stdc++.h> using namespace std; ...
- 洛谷 P2010 回文日期
Noip2016普及组T2 题目描述 在日常生活中,通过年.月.日这三个要素可以表示出一个唯一确定的日期. 牛牛习惯用8位数字表示一个日期,其中,前4位代表年份,接下来2位代表月 份,最后2位代表日期 ...
- #P2010 回文日期 的题解
题目描述 在日常生活中,通过年.月.日这三个要素可以表示出一个唯一确定的日期. 牛牛习惯用88位数字表示一个日期,其中,前44位代表年份,接下来22位代表月 份,最后22位代表日期.显然:一个日期只有 ...
- P2010回文日期
这道题是2016年普及组的题,难度等级为普及-. 这道题仍然是个模拟题.有两种策略:1.枚举回文,看日期是否存在2.枚举日期,看是否是回文.显然,前者要快很多,并且准确.本蒟蒻第一次便使用了后者,bu ...
- 洛谷 题解 P2010 【回文日期】
因为有8个字符,所以可得出每一年只有一个回文日期. 因此只要判断每一年就行了. 做法: 我们先把年倒过来,例如2018年就倒为8102,就得出8102就是回文日期的后四个字符,我们只要判断一下有没有这 ...
- [洛谷] P2010 [NOIP2016 普及组] 回文日期
点击查看代码 #include<bits/stdc++.h> using namespace std; int data1, data2, ans = 0, sum; int d[13] ...
- NOIP 普及组 2016 回文日期
传送门 https://www.cnblogs.com/violet-acmer/p/9859003.html 题解: 思路1: 相关变量解释: year1,month1,day1 : date1对应 ...
- NOIP 2016 回文日期
洛谷P2010 https://www.luogu.org/problemnew/show/P2010 JDOJ 3313 https://neooj.com:8082/oldoj/problem.p ...
随机推荐
- Java静态代码块与非静态代码块
静态代码块,格式是 static{ },随着类的加载而加载,且只执行一次. 在程序中,执行的优先级最高. 非静态代码块,格式是{ },在创建对象的时候运行(即new一个对象的时候),每创建一次对象就执 ...
- Manjaro 安装svn客户端,以及checkout使用命令
安装svn sudo pacman -S svn checkout操作指令 svn co http://xxxxxxx /home/xx update 更新版本 svn up [文件/目录] 直接使用 ...
- linux设置静态IP及网卡选择
linux中使用ifconfig命令查看网卡信息时显示为eth1,但是在network-scripts中只有ifcfg-eth0的配置文件,并且里面的NAME="eth0". ...
- 解决一次git问题
由于特殊原因,工作中不能使用sourcetree,今天遇到了一个问题记录一下解决办法,后续还是得好好去廖雪峰大神那里学习一下git的命令行操作呀 You have not concluded your ...
- 2.1 maven配置多镜像地址
背景: 自己在平时写项目用的是阿里的镜像地址,而在开发公司的项目是用的是公司提供的镜像地址,这就导致了每次使用的时候 都需要来回的修改maven的settings.xml文件,这样很容易出错,而且还浪 ...
- 环境准备—之—linux下安装python3和pip3
转自 上海悠悠 https://www.cnblogs.com/yoyoketang/p/10195102.html 前言 centos7 自带有 python,但是却是 python2 版本的 py ...
- git pull和本地文件冲突
在使用git pull代码时,经常会碰到有冲突的情况,提示如下信息: error: Your local changes to 'c/environ.c' would be overwritten b ...
- Apache Hadoop学习笔记一
官网:http://hadoop.apache.org/ 1 什么是Hadoop? Apache™Hadoop®项目开发了用于可靠,可扩展的分布式计算的开源软件. Apache Hadoop软件库是一 ...
- xlwt模块的使用
前记:Python处理表格时会用到xlwt和xlrd模块 xlwt设置行高:row sheet.row(2).set_style(xlwt.easyxf('font:height 440;')) 13 ...
- 【图论】最短路问题之spfa
写在算法前面: 前向星存图(一个神奇的超越邻接矩阵的存在) 首先讲一下需要定义的一些东西?? 1.head数组:head[点数]:head[i]表示以当前点i为起点的最后一条边(这里的最后指的是编号[ ...