当前位置: 首页 > news >正文

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

题目描述
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.lryc.cn/news/16119.html

相关文章:

  • postman入门到精通之【接口知识准备】(一)
  • 【算法数据结构体系篇class07】:加强堆
  • Taro3.x 容易踩坑的点(阻止滚动穿透,弹框蒙层父级定位)
  • SpringBoot+ActiveMQ-发布订阅模式(消费端)
  • vscode下使用arduino插件开发ESP32 Heltec WiFi_Kit_32_V3
  • 吐血整理AutoSAR Com-Stack 的配置【基于ETAS】
  • 面向对象进阶之元类
  • 【Android AIDL之详细使用】
  • ASP.NET MVC | 简介
  • 95后刚毕业2、3年就年薪50W,才发现,打败我们的不是年龄····
  • 动态分析和静态分析最主要的区别是什么?
  • WebUI 学习笔记
  • C# 中常见的设计模式附带代码案例
  • 秋招面试问题整理之机器学习篇
  • SuperMap超图使用简单笔记
  • 从0探索NLP——神经网络
  • 计算机操作系统和进程
  • JAVA服务端实现页面截屏(附代码)
  • Java入门要知道!
  • [6/101] 101次软件测试面试之经典面试题剖析
  • 电脑c盘满了变成红色了怎么清理,清理c盘详细攻略
  • 现在的00后,实在是太卷了
  • RocketMQ概述
  • 解决Ubuntu22.04.1上安装ch34x串口驱动报 Key was rejected by service 需要签名的问题
  • [python入门㊿] - python如何打断点
  • CCNP350-401学习笔记(501-550题)
  • 音箱上8键触摸芯片绿芯GTC08L完美替换启攀微
  • php+vue加油站会员服务系统 java微信小程序
  • ES6--class类(详解/看完必会)
  • ChatGPT的出现网络安全专家是否会被替代?