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 ...
 
随机推荐
- line-height的定义
			
line-height 定义: 即行高,两行文字基线之间的距离 三问: 什么是基线? 形象可理解为字母x的下边缘 为什么是基线? 在css中基线乃各种线的基础 需要两行吗? 实例: <!doct ...
 - 从0开始的Hexo主题制作
			
从0开始的Hexo主题制作 从零开始制作 Hexo 主题 H2O主题 先坑着
 - 旧版本firefox添加扩展addons的地址
			
不要在 firefox 本身的addons 中去查找, 搜索, 那个是搜索不到的, 因为那个是针对 最新版的, 旧版本的很多插件都不能用, 被移除了, 要在 那个专门 提供 插件的站点中去寻找扩展 h ...
 - spring boot 2使用Mybatis多表关联查询
			
模拟业务关系:一个用户user有对应的一个公司company,每个用户有多个账户account. spring boot 2的环境搭建见上文:spring boot 2整合mybatis 一.mysq ...
 - Dockerfile详解及优化
			
Dockerfile详解 0. Dockerfile的作用 docker可以根据Dockerfile中的指令来构建docker镜像.Dockerfile是一个文本文件,其应当包含用户想要构建一个镜像的 ...
 - Xiangqi(简单模拟)
			
4746: Xiangqi 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte 总提交: 15 测试通过:2 描述 Xiangqi i ...
 - caffe win添加新层
			
1.编写.h和.cpp .cu文件 将.hpp文件放到路径caffe-windows\caffe-master\include\caffe\layers下 将.cpp文件和.cu放到路径caffe-w ...
 - iview table 实现在数据中自定义标识
			
做了一个商旅订票的项目,在详情中有一个因公超标在表格中用一个“超”字显示的需求.后台框架用的iview+vue,也就是在iview Table中改变.在iview的框架中改变东西首先要想到的是ivie ...
 - Django框架简介-路由系统
			
2.2 路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表. 你就是 ...
 - js 获取昨天,今天,本周,上周,季度等时间范围(封装的js)
			
(function ($, ht) { "use strict"; $.extend(ht, { clickTimeRange:function(){ //点击重置按钮,时间文本框 ...