回文日期2020 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,表示日期。
【输出格式】
输出两行,每行1 个八位数。第一行表示下一个回文日期,第二行表示下
一个ABABBABA 型的回文日期。
【样例输入】
20200202
【样例输出】
20211202
21211212
【评测用例规模与约定】
对于所有评测用例,10000101 ≤ N ≤ 89991231,保证N 是一个合法日期的8位数表示。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
bool bbb(int i)
{string str=to_string(i);int j;if(str[0]==str[7]&&str[0]==str[2]&&str[2]==str[5]&&str[3]==str[1]&&str[3]==str[4]&&str[3]==str[6]){return false;}return true;
}
bool check(int i)
{string str=to_string(i);int j;if(str[0]==str[7]&&str[1]==str[6]&&str[2]==str[5]&&str[3]==str[4]){return false;}return true;
}
bool ccc(int i)
{if(i%4==0||i%100==0)return false;return true;
}int main()
{int i=0,j,k,m,n;int w,e;bool bns=true;scanf("%d",&n);int y=n/10000;int x=n%10000/100;int z=n%100;
while(1)
{for(j=x;j<=12;j++){if(j==1||j==3||j==5||j==7||j==8||j==10||j==12){for(k=z+1;k<=31;k++){m=y*10000+j*100+k;if(check(m)==false){bns=false;w=j;e=k; break;}}if(bns==false)break;}if(j==4||j==6||j==9||j==11){for(k=z+1;k<=30;k++){m=y*10000+j*100+k;if(check(m)==false){bns=false; w=j;e=k;break;}}if(bns==false)break;}if(j==2){if(ccc(y)==false){for(k=z+1;k<=28;k++){m=y*10000+j*100+k;if(check(m)==false){bns=false; w=j;e=k;break;}}if(bns==false)break;}else{for(k=z+1;k<=29;k++){m=y*10000+j*100+k;if(check(m)==false){bns=false; w=j;e=k;break;}}if(bns==false)break;} }}if(bns==false)break;y++;
}printf("%d%02d%02d",y,w,e);printf("\n");bns=true;while(1)
{for(j=x;j<=12;j++){if(j==1||j==3||j==5||j==7||j==8||j==10||j==12){for(k=z+1;k<=31;k++){m=y*10000+j*100+k;if(bbb(m)==false){bns=false;w=j;e=k; break;}}if(bns==false)break;}if(j==4||j==6||j==9||j==11){for(k=z+1;k<=30;k++){m=y*10000+j*100+k;if(bbb(m)==false){bns=false; w=j;e=k;break;}}if(bns==false)break;}if(j==2){if(ccc(y)==false){for(k=z+1;k<=28;k++){m=y*10000+j*100+k;if(bbb(m)==false){bns=false; w=j;e=k;break;}}if(bns==false)break;}else{for(k=z+1;k<=29;k++){m=y*10000+j*100+k;if(bbb(m)==false){bns=false; w=j;e=k;break;}}if(bns==false)break;} }}if(bns==false)break;y++;
}printf("%d%02d%02d",y,w,e);return 0;
}
回文日期2020 C语言相关推荐
- 蓝桥—回文日期(c语言)
题目描述 2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日.因为如果将这个日期按 "yyyymmdd" 的格式写成一个 8 位数是 202002 ...
- 蓝桥杯训练:回文日期(#C语言)
题目描述 2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日.因为如果将这个日期按 "yyyymmdd" 的格式写成一个 8 位数是 202002 ...
- 回文日期 php,c语言程序实例大全,220个详细程序源代码
c语言 程序设计 实例 大全 目录: 第一部分 基础篇 001 第一个C程序 002 运行多个源文件 003 求整数之积 004 比较实数大小 005 字符的输出 006 显示变量所占字节数 007 ...
- 2020蓝桥杯真题回文日期 C语言/C++
题目描述 2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日.因为如果将这个日期按 "yyyymmdd" 的格式写成一个 8 位数是 202002 ...
- Python案例:输出指定要求的回文日期
文章目录 一.提出任务 二.完成任务 (一)编写程序,实现功能 (二)运行程序,查看结果 一.提出任务 2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日.因为如果将 ...
- 蓝桥杯(Java) 回文日期
题目描述 2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日.因为如果将这个日期按 "yyyymmdd" 的格式写成一个 8 位数是 202002 ...
- 输出指定要求的回文日期与字符串拼接
知识点:字符串拼接 (1)字符串直接用+拼接 演示直接用+连接两个字符串 这样会有三个内存单元来存放字符串,浪费内存空间,建议采用StringBuffer(线程安全)或者StringBuilder(线 ...
- 蓝桥杯 历届试题 回文日期 C
问题描述 2020年春节期间,有一个特殊的日期引起了大家的注意:2020年2月2日. 因为如果将这个日期按 yyyymmdd 的格式写成一个8位数是 20200202,恰好是一个回文数.我们称这样的日 ...
- 洛谷 题解 P2010 【回文日期】
因为有8个字符,所以可得出每一年只有一个回文日期. 因此只要判断每一年就行了. 做法: 我们先把年倒过来,例如2018年就倒为8102,就得出8102就是回文日期的后四个字符,我们只要判断一下有没有这 ...
最新文章
- 我们软件是如何保障用户数据安全的?
- Cydia for Android2
- Android 将ARGB图片转换为灰度图
- 南瑞变压器保护装置说明书_电力试验:变压器感应耐压试验(二)
- oracle数据库导入导出expdp/impdp命令详细操作过程
- 【PAT天梯】【L2-2 小字辈(左子右兄加强版)】(树,水题)
- 值不值得入手_iPhone11现在还值不值得入手?真实用户说出心里话
- redis专题:redis缓存穿透、缓存击穿、缓存雪崩等问题如何解决?
- 产生java的动态库文件so的配置步骤
- 留给华为、小米、OPPO 们的时间不多了!
- Mac关闭SIP模式 开启root
- hdu 1010 Tempter of the Bone(dfs+奇偶剪枝)
- cad刷新快捷键_47个快捷键、50个CAD技巧。
- Nvidia驱动负优化与GTX1070的测试
- 路边停车系统的具体流程是什么
- 聚合支付二维码生成原理
- 微软中国CTO:手机里装的App一上网基本等于裸奔
- MySQL如何退出命令行
- 推荐一个有用的Excel操作类库 LinqToExcel
- linux终端设置为中文