2020蓝桥杯真题回文日期 C语言/C++

news2024/11/28 14:50:23

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

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

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

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

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

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

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

输入输出样例
示例
输入

20200202
输出

20211202
21211212
运行限制
最大运行时间:1s
最大运行内存: 256M

所需变量
int ge;//代表输入进来的个位数

int shi;//代表输入进来的十位数

int bai;//代表输入进来的百位数

int qian;//代表输入进来的千位数

int wan;//代表输入进来的万位数

int shiwan;//代表输入进来的十万位数

int baiwan;//代表输入进来的百万位数

int qianwan;//代表输入进来的千万位数

int nian;//代表年份

int yue;//代表月份

int ri;//代表日

int test;//用于输入从哪个数开始

int control;//用于控制是否是第一个输出的数

int i;//循环变量

int d;//看是否满足ABABBABA型回文日期

我们首先把输入进来的数字将其每位都分别抽离出来,使用方法很粗暴,代码如下:

ge = i%10;
shi = (i/10)%10;
bai = (i/100)%10;
qian = (i/1000)%10;
wan = (i/10000)%10;
shiwan = (i/100000)%10;
baiwan = (i/1000000)%10;
qianwan = (i/10000000)%10;
ri = 0;
yue = 0;
nian = 0;
ri = i%100;

得到每一位之后,我们首先需要判断的是,这个数是否满足我们正常的需求,那就是:首先月份不能出现二十几月,只要百位大于1,那我们千位就不能大于2,百位不能为0,然后就是每个月份内,我们日不能超过,诸如31天,30天,还有闰年跟平年的29和28天,均是判断条件,只要不满足我们就直接全部continue,判断下一个!部分代码如下:

if(qian>1||((qian==1)&&(bai>2)))
     continue;
   if(((qian==0)&&(bai==0)))
     continue;
   if((((qian==0)&&(bai==1))||((qian==0)&&(bai==3))||((qian==0)&&(bai==5))||((qian==0)&&(bai==7))||((qian==0)&&(bai==8))||((qian==1)&&(bai==0))||((qian==1)&&(bai==2)))) 
     if(ri>31)
       continue;
   if((((qian==0)&&(bai==4))||((qian==0)&&(bai==6))||((qian==0)&&(bai==9))||((qian==1)&&(bai==1))))
     if(ri>30)
       continue;
   nian = i/10000;
   if(((nian%4==0)&&(nian%100!=0))||(nian%400 ==0)){
     if((((qian==0)&&(bai==2)))&&(ri>29))
       continue;
   }
   else
   {
     if((((qian==0)&&(bai==2)))&&(ri>28))
       continue;
   
   }

做完上面全部工作后,我们得到的日期就是一个比较正常的日子了,现在就开始判断这个数是否是满足回文序列,如果满足我们就输出!
完整代码如下(编译器是dev,语言是C语言):

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  // 请在此输入您的代码
  int ge,shi,bai,qian,wan,shiwan,baiwan,qianwan,nian,yue,ri;
  int test,control=0,d = 0;
  scanf("%d",&test);
  for(int i=test+1;i<99999999;i++){
    ge = i%10;
    shi = (i/10)%10;
    bai = (i/100)%10;
    qian = (i/1000)%10;
    wan = (i/10000)%10;
    shiwan = (i/100000)%10;
    baiwan = (i/1000000)%10;
    qianwan = (i/10000000)%10;
    ri = 0;
    yue = 0;
    nian = 0;
    ri = i%100;
    if(qian>1||((qian==1)&&(bai>2)))
      continue;
    if(((qian==0)&&(bai==0)))
      continue;
    if((((qian==0)&&(bai==1))||((qian==0)&&(bai==3))||((qian==0)&&(bai==5))||((qian==0)&&(bai==7))||((qian==0)&&(bai==8))||((qian==1)&&(bai==0))||((qian==1)&&(bai==2)))) 
      if(ri>31)
        continue;
    if(ri == 0)
      continue;
    if((((qian==0)&&(bai==4))||((qian==0)&&(bai==6))||((qian==0)&&(bai==9))||((qian==1)&&(bai==1))))
      if(ri>30)
        continue;
    nian = i/10000;
    if(((nian%4==0)&&(nian%100!=0))||(nian%400 ==0)){
      if((((qian==0)&&(bai==2)))&&(ri>29))
        continue;
    }
    else
    {
      if((((qian==0)&&(bai==2)))&&(ri>28))
        continue;
    
    }
    
    if((control == 0)&&(ge == qianwan)&&(shi == baiwan)&&(bai == shiwan)&&(qian == wan))
    {
      printf("%d\n",i);
      control = 1;
    }
    if((d == 0)&&(ge == bai)&&(ge == shiwan)&&(ge == qianwan)&&(shi == qian)&&(shi == wan)&&(shi == baiwan))
    {
      printf("%d",i);
      d=1;
      break;
    }
  }
  return 0;
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JUC-day03

JUC-day03 线程池: 核心参数(核心线程数 最大线程数 闲置时间 闲置时间单位 阻塞队列 拒绝策略 工厂对象)—理论异步编排: 代码能并行的运行起来—练习(业务能力)流式编程: 串行化编程(List—>数据流—>逻辑一致(过滤器)—>新数据)----练习(编码能力) 1 阻塞队列 1…

ActiveReports.NET 17.0.1 Crack 2023-02-14

ActiveReports.NET v17 现已可用&#xff01;作为我们的主要年度版本&#xff0c;此更新为 ActiveReports 生态系统提供了大量令人兴奋的新功能和改进。 RDL 仪表板 - 新报告类型 ActiveReports 17 带来的最令人兴奋的功能之一是新的 RDL Dashboard 报告类型&#xff01;RDL 仪…

基于SpringBoot的外卖项目(详细开发过程)

基于SpringBootMyBatisPlus的外卖项目1、软件开发整体介绍软件开发流程角色分工2、外卖项目介绍项目介绍产品展示后台系统管理移动端技术选型功能结构角色3、开发环境的搭建开发环境说明建库建表Maven项目搭建项目的目录结构pom.xmlapplication.ymlReggieApplication启动类配置…

WSO2 apim Subscribe to an API

WSO2 apim Application Subscribe to an API1. Published an Api2. Subscribe to an API using Key Generation Wizard3. Subscribe to an existing application4. AwakeningWSO2安装使用的全过程详解: https://blog.csdn.net/weixin_43916074/article/details/127987099. Offi…

SpringCloud第五讲 Nacos注册中心-服务注册到Nacos

1.引入依赖&#xff1a; 在父工程中添加spring-cloud-alibaba的管理依赖 <!-- Nacos的管理依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version…

Leetcode12. 整数转罗马数字

一、题目描述&#xff1a; 罗马数字包含以下七种字符&#xff1a; I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符数字I1V5X10L50C100D500M1000 例如&#xff0c; 罗马数字 2 写做 II &#xff0c;即为两个并列的 1。12 写做 XII &…

系列五、事务

一、事务简介 1.1、定义 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 例如: 张三给李四转账1000块钱&#xff0c;张…

java获取当前时间的方法:LocalDateTime、Date、Calendar,以及三者的比较

文章目录前言一、LocalDateTime1.1 获取当前时间LocalDate.now()1.2 获取当前时间的年、月、日、时分秒localDateTime.getYear()……1.3 给LocalDateTime赋值LocalDateTime.of()1.4 时间与字符串相互转换LocalDateTime.parse()1.5 时间运算——加上对应时间LocalDateTime.now()…

SEO让Web3的需求更符合用户意图,AI+SEO充满想象

Web3 的基础设施建设现在仍处于前期&#xff0c;并没有出现现象级落地应用可以直接进入Web3,平常学习和交流中的大量信息和需求也只能通过传统互联网或智能手机作为端口&#xff0c;在企业浏览器和网站中寻找机会&#xff0c;这其中如何使企业品牌和原创内容能更好更靠前的呈现…

浅谈ffmpeg 压缩视频

1 首选需要安装ffmpeg 安装ffmpeg Linux 宝塔面板安装FFMpeg和编码库 yum install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm yum install http://rpmfind.net/linux/epel/7/x86_64/Packages/s/SDL2-2.0.14-2.el7.x86_64.rpm yum install …

【以太坊知识】

以太坊知识一、信标链引入1、内容2、合并二、二层网络与一层网络1、概念2、关系3、二层网络的工作原理三、分片1、概念2、分片特性一、信标链引入 1、内容 2022 年 9 月 15 日完成合并升级&#xff0c;将权益证明正式确定为太坊的共识机制。信标链是2020年启动的第一条权益证…

ubuntu 22.04 版本如何安装NCL

ubuntu 22.04 版本如何安装NCL 最近&#xff0c;重新创建了一个linux子系统进行学习。在安装ncl的时候&#xff0c;出现了各种问题。特此记录一下解决的过程。 首先下载了NCL的Linux版本的安装包&#xff0c;进行解压以及环境配置。但是在测试是否安装成功时&#xff0c;出现…

Linux部署java项目

Linux部署java项目启动虚拟机这部分的操作之前学习虚拟机时已经做过,可以参照之前的笔记即可推荐大家重新解压纯净版的RockyLinux来实现启动后登录rockylinuxsudo su -修改root用户密码passwd下面就切换到客户端软件连接虚拟机ifconfigifconfig | more查看ip地址使用Bvssh软件连…

如何判断机器学习数据集是否是线性的

首先,线性和非线性函数之间的区别: 左边是线性函数,右边是非线性函数。 线性函数:可以简单定义为始终遵循以下原则的函数: 输入/输出=常数。 线性方程总是1次多项式(例如x+2y+3=0)。在二维情况下,它们总是形成直线;在其他维度中,它们也可以形成平面、点或超平面。它们的…

追梦之旅【数据结构篇】——详解C语言实现动态版顺序栈

详解C语言动态实现顺序栈~&#x1f60e;前言&#x1f64c;预备小知识&#x1f49e;栈的概念及结构整体实现内容分析&#x1f49e;1.头文件编码实现&#x1f64c;2.功能文件编码实现&#x1f64c;3.测试文件的编写&#xff1a;&#x1f64c;总结撒花&#x1f49e;&#x1f60e;博…

ToB 产品拆解—Temu 商家管理后台

Temu 是拼多多旗下的跨境电商平台&#xff0c;平台产品于9月1日上线&#xff0c;9月1日到9月15日为测试期&#xff0c;之后全量全品类放开售卖。短短几个月的时间&#xff0c;Temu 在 App Store 冲上了购物类榜首&#xff0c;引起了国内的广泛关注。本文将以 B 端产品经理的角度…

opencv图片处理

目录1 图片处理1.1 显示图片1.2 旋转图片1.3 合并图片1.4、Mat类1.4.1、像素的储存结构1.4.2、访问像素数据1.6、rgb转灰度图1.7、二值化1.8、对比度和亮度1.9、图片缩放1.9.1、resize临近点算法双线性内插值1.9.2、金字塔缩放1.10、图片叠加1 图片处理 1.1 显示图片 #includ…

系统架构——分布式架构负载均衡系统设计实战

摘要 关于“负载均衡”的解释&#xff0c;百度词条里&#xff1a;负载均衡&#xff0c;英文叫Load Balance&#xff0c;意思就是将请求或者数据分摊到多个操作单元上进行执行&#xff0c;共同完成工作任务。负载均衡&#xff08;Load Balance&#xff09;建立在现有网络结构之…

HTTP2.0特性

HTTP2.0特性1. 二进制分帧1.1 关于帧的知识1.2 什么是二进制分帧1.3 二进制分帧如何工作1.4 二进制分帧对性能优化工作的贡献2. 首部压缩2.1 什么是首部压缩2.2 首部压缩如何工作2.3 首部压缩性能优化工作的贡献3. 流量控制4. 多路复用4.1 什么是多路复用4.2 多路复用如何工作4…