回文日期处理方法

第十一届蓝桥杯B组回文日期 【问题描述】 2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202, 恰好是一个回文数。我们称这样的日期是回文日期。 有人表示 20200202 是 “千年一遇” 的特殊日子。对此小明很不认同,因为 不到 2 年之后就是下一个回文日期:20211202 即 2021 年 12 月 2 日。 也有人表示 20200202 并不仅仅是一个回文日期,还是一个 ABABBABA 型的回文日期。对 阅读详情

题目描述

2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。

有人表示 20200202 是 “千年一遇” 的特殊日子。对此小明很不认同,因为不到 2 年之后就是下一个回文日期:20211202 即 2021 年 12 月 2 日。

也有人表示 20200202 并不仅仅是一个回文日期,还是一个 ABABBABA 型的回文日期。对此小明也不认同,因为大约 100 年后就能遇到下一个 ABABBABA 型的回文日期:21211212 即 2121 年 12 月 12 日。算不上 “千年一遇”,顶多算 “千年两遇”。

给定一个 8 位数的日期,请你计算该日期之后下一个回文日期和下一个 ABABBABA 型的回文日期各是哪一天。

输入

输入包含一个八位整数 NN,表示日期。

对于所有评测用例,10000101≤N≤8999123110000101 \leq N \leq 8999123110000101≤N≤89991231,保证 N 是一个合法日期的 8 位数表示。

20200202

输出

输出两行,每行 1 个八位数。第一行表示下一个回文日期,第二行表示下一个 ABABBABA 型的回文日期。

20211202
21211212

C++

#include <iostream>
#include <cstring>
using namespace std;
int months[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 判断回文日期是否合法
bool check_valid1(int date) {
    int year = date / 10000;
    int month = date % 10000 / 100;
    int day = date % 100;
    
    if (month < 1 || month > 12) return false;
    if (day == 0 || month != 2 && day > months[month]) return false;
    if (month == 2) {
        int leap = (year % 100 && year % 4 == 0) || (year % 400); // 闰年判断表达式
        if (day > months[month]+leap) return false;
    }
    return true;
}
// 判断是否是ABABBABA
bool check_valid2(int date) {
	string s = to_string(date);
    if(s[0]!=s[2] || s[1]!= s[3] || s[0] == s[1]) return false;
    return true;
}

int main() {
	int date1;
	cin >> date1;
	int res1 = 0, res2 = 0;
	for (int i = 1000; i < 10000; i++) {
		int date = i, x = i;
		while (x) date = date * 10 + x % 10, x /= 10;
		if (date > date1 && check_valid1(date)) {
			if (!res1)res1 = date;
			if (check_valid2(date) && !res2) res2 = date;
		}	
	}
	cout << res1 << endl << res2 << endl;
	return 0;
}
c语言求解蓝桥杯真题回文日期 先看原题: 2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。 有人表示 20200202 是 “千年一遇” 的特殊日子。对此小明很不认同,因为不到 2 年之后就是下一个回文日期:20211202 即 2021 年 12 月 2 日。 也有人表示 20200202 并不仅仅是一个回文日期,还是一个 ABABBABA 型的回文日期。. 阅读详情

相关推荐

NOIP2016普及组复赛——T2回文日期

题目描述 在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。 牛牛习惯用 8 位数字表示一个日期,其中,前 4 位代表年份,接下来 2 位代表月份,最后 2 位代表日期。 显然:一个日期只有一种表示方法,而两个不同的日期的表示方法不会相同。 牛牛认为,一个日期是回文的,当且仅当表示这个日期的8位数字是回文的。 现在,牛牛想知道:在他指定的两个日期之间(包含这两个日期本身),有多少个真实存在的日期是回文的。 一个 8 位数字是回文的,当且仅当对于所有的 i(1≤i≤8) 从左向右数的第i个数

少儿编程乔老师 811

蓝桥杯:回文日期(超详解)

题目:2020年春节期间,有一个特殊的日期引起了大家的注意:2020年2月2日。因为如果将这个R期按“ymmdd”沿格式写成一一个8位数是20200202恰好是一个回文数。我们称这样沿旧期是回文日期。 有人表示20200202是“千年一遇”的特殊日子。对此小明很不认同,因为不到2年之后就是下一个回文日期:202112D2即2021年12月2日。 也有人表示20200202并不仅仅是一个回文日期,还是一个ABABBABA型的回文日期。对此小明也不认同,因为大约100年后就能遇到下一个ABABBAB...

weixin_61642087的博客 8578

Geant4学习——入门(基本概念、Geant4工具包的结构、强制类、可选类)

Geant4是由欧洲核子研究组织基于C++面向对象技术开发的蒙特卡罗应用软件包,用于模拟粒子在物质中输运的物理过程。由于具有良好的通用性和扩展能力,Geant4在涉及微观粒子与物质相互作用的诸多领域获得了广泛应用。 第一部分 Geant4的基本概念 HEP中的模拟是“虚拟现实”。仿真既可用于在研发阶段帮助设计探测器,又可用于物理研究中了解探测器的响应。为了创建这样的虚拟现实,我们需要对粒子间的相互作用,几何形状和材料进行建模,以便将基本粒子传播到检测器中。我们还需要描述检测器生成原始数据的灵敏度。 Gea

M_M-铭的博客 2万+

蓝桥杯_回文日期(C语言解法)

后序使用if语句在条件中调用此函数,同时,特别注意该函数的返回值,若返回值为1,表示该日期是合法的,接着判断其是否为回文型的日期和ABABBABA型的日期;分别定义整型变量y、m、d及整型数组a[13],该数组的下标从1~12,用来分别存放对应月份的天数,变量y、m、d分别表示从输入的N后开始的日期中提取的年、月、日;通过计算方式得到y、m、d相对应的值,进一步判断得到的y、m、d是否在合法日期对于年月日的规定范围内,这一步判断可以通过编写一个函数来实现;1、输入一个八位整数N的格式为yyyymmdd型。

qq_60682673的博客 1178

Python XML 转 JSON,XML 转字典

今天我们将学习如何在 Python 中将 XML 转换为 JSON 和 XML 转换为字典。我们可以使用 Python 的xmltodict模块来读取 XML 文件并将其转换为字典或 JSON 数据。我们还可以在大型 XML 文件上进行流式处理,并将其转换为字典。在进入编码部分之前,让我们首先了解为什么需要进行 XML 转换。

rubys_的专栏 2501

Keil5与ARM编译器V5安装指南:从下载到配置全流程解析

本文提供Keil5与ARM Compiler V5的完整安装与配置指南。针对新版Keil5默认不包含V5编译器导致老工程编译失败的问题,详细解析了从软件下载、授权管理到获取并正确安装ARM Compiler V5(AC5)的全流程,确保开发者能顺利搭建兼容老项目的稳定开发环境。

weixin_29158047的博客 874

NOPI2016普及组回文日期题解报告

题目描述 在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。 牛牛习惯用8位数字表示一个日期,其中,前4位代表年份,接下来2位代表月份,最后2位代表日期。显然:一个日期只有一种表示方法,而两个不同的日期的表示方法不会相同。 牛牛认为,一个日期是回文的,当且仅当表示这个日期的8位数字是回文的。现在,牛牛想知道:在他指定的两个日期之间(包含...

一只酷酷光儿的博客 636

kemeas算法继续优化——elkan kmeas算法

题记:又是凌晨3点的夜 elkan kmeans算法 在我的上一篇博客《kmeans算法性能改进_kmeans++算法+kmeans++优化算法+距离计算优化》中,在一般kmeans算法的基础上,添加了对于初始条件和距离计算更上的一些优化技巧。这篇博客聊一聊elkan算法,其实也是对于kmeans运行速度的优化算法。主要作用与kmeans的距离计算过程。 原理 假如我们已经知道任意两个样本之间的距离,再假设我们已经知道了样本1与聚类中心1之间的距离,根据三角性两边之和大于第三边,c+d>a,所以如果

铁血军的小博客 7065

C++课程设计之回文日期

一个在ACM题目基础上的课设

abc583的博客 1622

QGis二次开发 —— 1.1、ubuntu24.04下搭建QGis3.40.12二次开发环境(附:全部问题解决方法)

QGis二次开发 —— 1.1、ubuntu24.02下搭建QGis3.40.12二次开发环境(附:全部问题解决方法)

250

学Simulink--基于多物理场耦合与系统集成的储能系统场景实例:压缩空气储能(CAES)系统的热力学建模与效率分析

本文提供了一个基于Simulink的压缩空气储能(CAES)系统热力学建模教程。通过多物理场耦合方法,详细演示了从系统架构设计到仿真测试的全过程,包括多级压缩机/膨胀机系统搭建、显热蓄热系统设计以及效率分析。文章重点强调了热管理对提升CAES效率的关键作用,并给出了68%电-电效率的优化案例。最后提出了变工况建模、不同蓄热介质对比等高级优化方向,为开发零碳大容量储能系统提供了实用工具和方法。

amy_mhd的博客 128

回文日期(保姆级教程)

就是由限制条件最少的点入手,先从年开始,再考虑月,逐步排除不符合题意的情况,得到解;if(!if(month!

2302_77698668的博客 1631

Linux系统之部署经典魔塔小游戏

Linux系统之部署经典魔塔小游戏

jks212454的博客 1807

回文日期

题目描述 在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。 牛牛习惯用88位数字表示一个日期,其中,前44位代表年份,接下来22位代表月 份,最后22位代表日期。显然:一个日期只有一种表示方法,而两个不同的日期的表 示方法不会相同。 牛牛认为,一个日期是回文的,当且仅当表示这个日期的8位数字是回文的。现 在,牛牛想知道:在他指定的两个日期之间包含这两个日期本身),有多少个...

weixin_30667649的博客 287

【Windows Server 2019】组策略的配置与管理——理论基础

博文介绍了组策略的定义,作用和分类。组策略包括计算机配置和用户配置;组策略又分为为基于本地的组策略和基于AD(活动目录)的域组策略。并说明了不同组策略发生冲突时默认的规则。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

贤鱼的刷题日常--P2010 [NOIP2016 普及组] 回文日期

回文日期题目思路详细解说

贤鱼的博客 400

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java任务项目-输出指定要求的回文日期

1.输出指定要求的回文日期 2.案例-计算中华人民共和国成立了多少天

qq_67308195的博客 218

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

信息学奥赛一本通 1974:【16NOIP普及组】回文日期 | 洛谷 P2010 [NOIP2016 普及组] 回文日期

判断当前日期是否是回文的,可以将年月日进行数字拆分,每一位保存在长为8的整型数组中。,先让日加1,如果日超过本月天数,那么月份加1,日变为1。主函数中,让d为起始日期,每次循环判断当前日期是否是回文的,如果是则计数,而后让日期变为下一天。构造出回文数字后,判断该日期是否合法,以及该日期是否在起始与终止日期之间。复杂度为两个日期数值的差值,极端情况下,从0年1月1日到9999年12月12日,一共有约。设表示日期的结构体,属性包括年月日,方法有进入下一天,以及判断当前日期是否是回文的。函数将字符串转为整数。..

君义NOIP的博客 1536

蓝桥杯第十届真题第七题:回文日期

蓝桥杯第十届真题第七题:回文日期

fakerzhang的博客 1863

Java(判断日期是否合法)

1、判断日期是否合法 package g01; /** * 功能:输出指定要求的回文日期 * 作者:小小榕 * 日期:2022/5/19 16:13 */ public class PalindromicDate { public static boolean isLegalDate(String strDate){ int year, month, day; year = Integer.parseInt(strDate.substring(0, 4));

X_Serendipity的博客 1418

蓝桥杯高频考点-与日期相关的题目

蓝桥杯高频考点-与日期相关的题目

聂可以的博客 1669

蓝桥杯Java省赛B组 回文日期

蓝桥杯Java省赛B组

weixin_58133735的博客 614

输出指定要求的回文日期

输出指定要求的回文日期

m0_67309560的博客 75

蓝桥杯笔记--回文日期(枚举)

蓝桥杯回文日期 之前我用devc++时,用都挺好的,但今天再vs编译器上用这个函数名就不给我使用stoi和to_string了,改成就好了

liuwenhao_1的博客 256

Luogu P2010 回文日期 // 暴力

十分SB的一道题 我刚开始真就一天一天往前推,结果TM超时了; 还写了70行...... 去看题解发现其实回文日期很少,我们可以枚举回文日期并判断他们是否在范围内. 由于月日限制比年份多,所以枚举月日并将它们回文处理..... 而且还不需要判闰年,因为0229的反串是9220,而9220是闰年.直接calendar中写29就行了. 然后应该是一个超快的跑速.....把逐个推按在地上打 ...

weixin_30375427的博客 100

回文日期&&门牌制作

输入的情况有以下几种:1)该数为ABABBABA型的数,则下一个回文数为ABAB= ABAB+1,且BABA为合法日期;2)该数为回文数但不是ABABBABA型(ABCDDCBA),则下一个回文数为[ABCD+1,1+CDBA],当日期不合格的时,继续++;我们称这样的日期是回文日期。后面发现这样很复杂,每个月份天数还不一样,就去看了别人的答案,发现他们都是用暴力遍历的,虽然很暴力,但是很简单。给定一个 8 位数的日期,请你计算该日期之后下一个回文日期和下一个 ABABBABA 型的回文日期各是哪一天。

garbage回收中心 415
上一篇: 错误票据-stringstream的使用
下一篇: 洛谷P1308 统计单词数
CodeSlogan
博客等级 码龄6年 4227粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeSlogan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值