蓝桥-回文日期

目录

题目链接

​编辑

​编辑

什么是回文数?​编辑

代码 

100%过

90%暴力

优化写的暴力代码


题目链接

2.回文日期 - 蓝桥云课 (lanqiao.cn)



什么是回文数?


代码 

100%过

把那个90%的代码的循环限制条件去掉就行了,题目只是限制了N的范围,没说输出的日期也是在这个范围里。

#include <bits/stdc++.h>
using namespace std;

bool check(int y,int m,int d) {
	if(y<0 || m<1 || m>12 || d<1) {
		return false;
	}
	int m_d[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
	if((y%4==0 && y%100 !=0) || y%400==0) {
		m_d[2]=29;
	}
	if(d>m_d[m]) {
		return false;
	}
	return true;
}

bool check2(int y,int m,int d) {
	int a1=y/1000;
	int a2=y%1000/100;
	int a3=y%100/10;
	int a4=y%10;
	int a5=m/10;
	int a6=m%10;
	int a7=d/10;
	int a8=d%10;
	if(a1==a8 && a2==a7 && a3==a6 && a4==a5) {
		return true;
	}
	return false;
}

bool check3(int y,int m,int d) {
	int a1=y/1000;
	int a2=y%1000/100;
	int a3=y%100/10;
	int a4=y%10;
	int a5=m/10;
	int a6=m%10;
	int a7=d/10;
	int a8=d%10;
	if(a1==a8 && a2==a7 && a3==a6 && a4==a5 && a2==a4 && a1==a3) {
		return true;
	}
	return false;
}

int main() {
	int n;
	cin>>n;
	for(int i=n+1; ; i++) {
		int year=i/10000;
		int month=i%10000/100;
		int day=i%100;
		if(check(year,month,day)) { //判断符不符合日期的基本要求
			if(check2(year,month,day)) {
				printf("%d%02d%02d\n",year,month,day);
				break;
			}
		}
	}
	for(int i=n+1; ; i++) {
		int year=i/10000;
		int month=i%10000/100;
		int day=i%100;
		if(check(year,month,day)) { //判断符不符合日期的基本要求
			if(check3(year,month,day)) {
				printf("%d%02d%02d\n",year,month,day);
				break;
			}
		}
	}
	return 0;
}

90%暴力

好冗长。。。。。。。哪里错了呢?

#include <bits/stdc++.h>
using namespace std;

bool check(int y,int m,int d) {
	if(y<0 || m<1 || m>12 || d<1) {
		return false;
	}
	int m_d[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
	if((y%4==0 && y%100 !=0) || y%400==0) {
		m_d[2]=29;
	}
	if(d>m_d[m]) {
		return false;
	}
	return true;
}

bool check2(int y,int m,int d) {
	int a1=y/1000;
	int a2=y%1000/100;
	int a3=y%100/10;
	int a4=y%10;
	int a5=m/10;
	int a6=m%10;
	int a7=d/10;
	int a8=d%10;
	if(a1==a8 && a2==a7 && a3==a6 && a4==a5) {
		return true;
	}
	return false;
}

bool check3(int y,int m,int d) {
	int a1=y/1000;
	int a2=y%1000/100;
	int a3=y%100/10;
	int a4=y%10;
	int a5=m/10;
	int a6=m%10;
	int a7=d/10;
	int a8=d%10;
	if(a1==a8 && a2==a7 && a3==a6 && a4==a5 && a2==a4 && a1==a3) {
		return true;
	}
	return false;
}

int main() {
	int n;
	cin>>n;
	for(int i=n+1; i<=89991231; i++) {
		int year=i/10000;
		int month=i%10000/100;
		int day=i%100;
		if(check(year,month,day)) { //判断符不符合日期的基本要求
			if(check2(year,month,day)) {
				printf("%d%02d%02d\n",year,month,day);
				break;
			}
		}
	}
	for(int i=n+1; i<=89991231; i++) {
		int year=i/10000;
		int month=i%10000/100;
		int day=i%100;
		if(check(year,month,day)) { //判断符不符合日期的基本要求
			if(check3(year,month,day)) {
				printf("%d%02d%02d\n",year,month,day);
				break;
			}
		}
	}
	return 0;
}

优化写的暴力代码

利用flag,判断check2的同时判断flag是否是flase,如果是的话才进入,打印出一个普通回文数后,flag记为true,下次就不会再进入了。这样的话不用再写一遍for

if(check2(year,month,day) && flag==false) {//该部分目的是输出第一个回文日期,flag作为标记。
//当找到第一个回文日期之后,将flag变为ture。这样下一次碰到普通回文日期时就不会输出。
	printf("%d%02d%02d\n",year,month,day);
	flag=true;
}

当然,check2和check3也可以放在主函数里写,这样a1~a8就写一次就够了。

#include <bits/stdc++.h>
using namespace std;

bool check(int y,int m,int d) {
	if(y<0 || m<1 || m>12 || d<1) {
		return false;
	}
	int m_d[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
	if((y%4==0 && y%100 !=0) || y%400==0) {
		m_d[2]=29;
	}
	if(d>m_d[m]) {
		return false;
	}
	return true;
}

bool check2(int y,int m,int d) {
	int a1=y/1000;
	int a2=y%1000/100;
	int a3=y%100/10;
	int a4=y%10;
	int a5=m/10;
	int a6=m%10;
	int a7=d/10;
	int a8=d%10;
	if(a1==a8 && a2==a7 && a3==a6 && a4==a5) {
		return true;
	}
	return false;
}

bool check3(int y,int m,int d) {
	int a1=y/1000;
	int a2=y%1000/100;
	int a3=y%100/10;
	int a4=y%10;
	int a5=m/10;
	int a6=m%10;
	int a7=d/10;
	int a8=d%10;
	if(a1==a8 && a2==a7 && a3==a6 && a4==a5 && a2==a4 && a1==a3) {
		return true;
	}
	return false;
}

int main() {
	int n;
	cin>>n;
	bool flag=false;
	for(int i=n+1; ; i++) {
		int year=i/10000;
		int month=i%10000/100;
		int day=i%100;
		if(check(year,month,day)) { //判断符不符合日期的基本要求
			if(check2(year,month,day) && flag==false) {//该部分目的是输出第一个回文日期,flag作为标记。
        //当找到第一个回文日期之后,将flag变为ture。这样下一次碰到普通回文日期时就不会输出。
				printf("%d%02d%02d\n",year,month,day);
				flag=true;
			}
			if(check3(year,month,day)) { //输出ABABBABA型的回文日期
				printf("%d%02d%02d\n",year,month,day);
				break;
			}
		}
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/522875.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

每日一题(leetcode1026):节点与其祖先的最大差值--dfs

考虑到只能计算祖先之间的节点差而不能计算兄弟之间的节点差&#xff0c;所以思考使用dfs来解决该题。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), ri…

axure谷歌插件(直接下载)

axure谷歌插件 在网上找一个谷歌的axure&#xff0c;不是登陆就是收费&#xff0c;离谱。找了好久才找到这个&#xff0c;我下载保存到网盘了&#xff0c;直接下载就ok&#xff0c;永久无提取码。 下载插件文件&#xff0c;打开开发者模式&#xff0c;直接拖进来就ok。 网盘…

YOLOv8改进 | 细节涨点篇 | 利用YOLOv8自带的RayTune进行超参数调优

一、本文介绍 本文给大家带来的改进机制是利用Ray Tune进行超参数调优,在YOLOv8的项目中目前已经自带了该超参数调优的代码,我们无需进行任何的改动,只需要调用该方法输入我们的一些指令即可,当然了,这些超参数的设置还是比较又学问的,本文的内容也是应群友的需求进行发…

mid转MP3怎么转?一分钟搞定~

MIDI&#xff08;Musical Instrument Digital Interface&#xff09;文件格式的诞生可以追溯到上世纪80年代&#xff0c;音频技术迅速崛起。为了让不同音乐设备之间能够互相通信&#xff0c;MIDI格式成为了音乐的标准。它不同于常见的音频文件格式&#xff0c;不包含实际的声音…

JavaEE 初阶篇-深入了解线程池(线程池创建、线程池如何处理任务)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 线程池概述 1.1 线程池的优点 1.2 不使用线程池的问题 1.3 线程池的工作原理图 1.4 如何创建线程池&#xff1f; 2.0 通过 ThreadPoolExecutor 类自定义创建线程…

关于交叉小波变换

小波变换可以很好的在时频域中分析单个信号的瞬态和突变等时变特性&#xff0c;交叉小波变换是在小波变换的基础上提出的&#xff0c; 主要用来处理两个信号之间的相关程度。传统的互相关分析方法&#xff0c; 是通过傅里叶变换将信号从时域上转换到频域上&#xff0c;然后在频…

neo4j图数据库下载安装配置

neo4j下载地址Index of /doc/neo4j/3.5.8/ 1.说明&#xff1a;jdk 1.8 版本对应的 neo4j 数据库版本 推荐安装3.X版本 2.配置系统环境变量 3.启动 neo4j.bat console 4.访问

ENSP防火墙,解决不兼容及报错等问题,windows命令行修改网卡配置,配置cloud及防火墙连接,web连接防火墙

解决不兼容和报错等问题 原因1&#xff1a;VirtualBox版本太低&#xff08;5.1.x&#xff09;或太高&#xff08;6.x.x&#xff09;和eNSP不兼容 卸载virtualbox&#xff0c;下载virtualbox 5.2.28&#xff0c;安装稳定版本的virtualbox 删除原有程序&#xff1a;c:\用户\***\.…

烤羊肉串引来的思考--命令模式

1.1 吃羊肉串&#xff01; 烧烤摊旁边等着拿肉串的人七嘴八舌地叫开了。场面有些混乱&#xff0c;由于人实在太多&#xff0c;烤羊肉串的老板已经分不清谁是谁&#xff0c;造成分发错误&#xff0c;收钱错误&#xff0c;烤肉质量不过关等。 外面打游击烤羊肉串和这种开门店做烤…

FSQ8罗德与施瓦茨FSQ8信号分析仪

181/2461/8938产品概述&#xff1a; R&S FSQ8 信号分析仪将两种仪器合二为一。它提供高达 120 MHz 解调带宽的信号分析以及高端频谱分析仪的动态范围。 频率范围&#xff1a;20 Hz 至 8 GHz高端频谱分析仪的动态范围 TOI 25 dBm&#xff0c;典型值1 dB 压缩 13 dBm&…

【已解决】HalconDotNet.HOperatorException:“HALCON error #1201: Wrong type of control

前言 最近在学习Halcon视觉和C#的联合开发&#xff0c;碰到一个比较有意思的问题记录一下&#xff0c;大致的报错信息是说我用的halcondotnet版本和我在halcon导出的使用的halcondotnet.dll版本不一致&#xff0c;所以才报错的&#xff01; 解决 首先你得找到你安装halcon的…

安全测试概述和用例设计

一、安全测试概述 定义&#xff1a;安全测试是在软件产品开发基本完成时&#xff0c;验证产品是否符合安全需求定义和产品质量标准的过程。 概念&#xff1a;安全测试是检查系统对非法侵入渗透的防范能力。 准则&#xff1a;理论上来讲&#xff0c;只要有足够的时间和资源&a…

哈希字典Dict

目录 Dict的组成 1.hash表的节点 2.hash表结构 3.字典 4.Dict结构 hash算法 哈希函数 什么情况下使用 rehash rehash主要的函数dictExpand 怎么判断要进行扩容还是收缩 什么时候会用到扩展和收缩 渐进式rehash 渐进式rehash主要的函数dictRehash 字典API 字典的…

shopee虾皮运营技巧,学会这几招能有效提高销量

在电商的运营过程中&#xff0c;新手总会踩上不少的坑&#xff0c;运气好的累计成经验值&#xff0c;应用于日后的店铺运营中&#xff0c;运气不好的&#xff0c;进坑了就再也爬不上来了&#xff0c;特别是跨境电商&#xff0c;本身与国内电商存在很大的信息差&#xff0c;不可…

【EI会议】2024年机械制造、航天工程技术与材料应用国际学术会议 (MMAETMA 2024)

2024 International Academic Conference on Mechanical Manufacturing, Aerospace Engineering Technology and Materials Application (MMAETMA 2024) 会议地点&#xff1a;长沙&#xff0c;中国 截稿时间&#xff1a;2024.4.30 网址&#xff1a;http://www.mmaetma.com/ …

Linux环境下安装redis踩坑zmalloc.h:50:31收录(附解决方法)

老将回归第一篇问题收录&#xff08;苦笑&#xff09; 报错收录 解决&#xff1a;zmalloc.h:50:31: 致命错误&#xff1a;jemalloc/jemalloc.h&#xff1a;没有文件或目录 解法一&#xff1a; # 执行如下命令 MALLOC环境变量去建立Redis的libcmake MALLOClibc解决 解法二&a…

FJSP:霸王龙优化算法(Tyrannosaurus optimization,TROA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题&#xff08;Flexible Job Shop Scheduling Problem&#xff0c;FJSP&#xff09;&#xff0c;是一种经典的组合优化问题。在FJSP问题中&#xff0c;有多个作业需要在多个机器上进行加工&#xff0c;每个作业由一系列工序组成&a…

企业IT运维事中故障定位方法及工具

企业IT故障定位指诊断故障直接原因或根因&#xff0c;故障定位有助于故障恢复动作更加有效。故障定位通常是整个故障过程中耗时最长的环节&#xff0c;定位的目标围绕在快速恢复的基础上&#xff0c;而非寻找问题根因&#xff0c;后者由问题管理负责。通常大部分可用性故障&…

电脑桌面监控软件

电脑桌面监控软件 有一项触目精心的统计&#xff0c;2022年上半年&#xff0c;有33.2%的网民在单位上网&#xff0c;上网行为包括聊天、游戏、看小说、炒股等等&#xff0c;可以说五花八门。这些行为给企业带来四个问题&#xff1a; &#xff08;1&#xff09;宽带资源被滥用。…

Myelsa的Python函数之旅(高铁直达)

一、函数的定义&#xff1a; 函数(Function)是一段可重复使用的代码块&#xff0c;用于执行特定的任务或计算&#xff0c;并可以接受输入参数和返回输出结果。函数可以将复杂的问题分解为更小的子问题&#xff0c;提高代码的可读性和可维护性。 二、函数的组成&#xff1a; 在…