蓝桥-回文日期

目录

题目链接

​编辑

​编辑

什么是回文数?​编辑

代码 

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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Peter算法小课堂—线性dp

今天&#xff0c;你读完这篇文章&#xff0c;普及组的动态规划已经可以秒了。 最长公共子序列 求两个数列的最长公共子序列&#xff08;Longest Common Subsequence&#xff0c;LCS&#xff09;的长度。 数列 X 和 Y 的最长公共子序列 Z&#xff0c;是指 Z 既是 X 的子序列&…

cutlass之基础类型

Coord Coord是一个基础数据类型&#xff0c;在cutlass用的很多&#xff0c;有必要掌握清楚&#xff0c;该类型主要使用场景如下&#xff1a; 顾名思义就是坐标保存。using stridecoord<2>使用方式, 保存一个tensor不同维度之间的步长&#xff0c;这样讲不太好理解步长&…

【JavaEE】_Spring MVC项目获取Cookie

目录 1. Cookie与Session基础知识 1.1 Cookie与Session的区别 2. 使用servlet原生方法获取Cookie 2.2 关于λ表达式遍历法的空指针问题 2.3 Cookie的伪造 3. 使用Spring注解获取Cookie 3.1 获取单个Cookie 3.2 获取多个Cookie 1. Cookie与Session基础知识 在本专栏HTT…

HTTP的介绍

一.什么是HTTP&#xff1f; Hyper Text Transfer Protocol,超文本传输协议&#xff0c;规定了浏览器和服务器之间数据传输的规则。 二.HTTP的特点 &#xff08;1&#xff09;基于TCP协议&#xff1a;面向连接&#xff0c;安全 &#xff08;2&#xff09;基于请求-响应模型的&…

学习周报:文献阅读+Fluent案例+水力学理论学习

目录 摘要 Abstract 文献阅读&#xff1a;物理信息的神经网络与湍流传质的非封闭机制模型相结合 文献摘要 提出问题 提出方案 实验设置 所需方程介绍 雷诺时均方程&#xff08;RANS&#xff09; K-epsilon两方程模型 神经网络框架 DNN部分 损失函数定义 PINN部分…

JDK、JRE和JDK的关系

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a;每天一个知识点 ✨特色专栏&#xff1a…

鱼骨图功能实现

dom: <div class="module-content"><div class="title"><span>[</span><p>鱼骨图</p><span>]</span></div><div class="line-mian"></div><div :ref="module + i&q…

配置vscode用于STM32编译,Debug

配置环境参考&#xff1a; Docs 用cubemx配置工程文件&#xff0c;用VScode打开工程文件。 编译的时候会有如下报错&#xff1a; vscode出现process_begin :CreateProcess failed 系统找不到指定文件 解决方案&#xff1a;在你的makefile中加上SHELLcmd.exe就可以了 参考…

VRRP+MSTP+BFD

一、组网 二、要求 PC6&#xff08;vlan 10内PC&#xff09;访问1.1.1.1走JR-1——CORE1——MSR到1.1.1.1 PC7&#xff08;vlan 20内PC&#xff09;访问1.1.1.1走JR-2——CORE2——MSR到1.1.1.1 链路故障时切换路线&#xff0c;来回路径一致 三、配置步骤 SR bfd echo-sou…

大数据系列 | Kafka架构分析及应用

大数据系列 | Kafka架构分析及应用 1. Kafka原理分析2. Kafka架构分析3. Kafka的应用3.1. 安装Zookeeper集群3.2. 安装Kafka集群3.3. 生产者和消费者使用3.3.1. 生产者使用3.3.1. 消费者使用 4. Kafka Controller控制器 1. Kafka原理分析 Kafka是一个高吞吐量、 持久性的分布式…

C++进阶篇11---IO流

一、对C语言的输入输出的理解 C语言中我们经常用scanf()和printf()进行输入输出&#xff0c;形象的描述它们的作用如下 对于缓冲区的理解&#xff1a; 可以屏蔽掉低级I/O的实现&#xff0c;低级I/O的实现依赖操作系统本身内核的实现&#xff0c;所以如果能够屏蔽这部分的差异…

【使用flex两端对齐加margin-right】

解决办法众多&#xff1a;https://cloud.tencent.com/developer/article/1516801 <div class"job_tabs_content"><div class"job_tab_item"></div><div class"job_tab_item"></div><div class"job_tab_i…