网站建设与维护课程,外汇网站怎么做优外汇网站,古镇网站建设制作,网页设计代码中字体的颜色如何改题目描述 2020 年春节期间#xff0c;有一个特殊的日期引起了大家的注意#xff1a;2020 年 2 月 2 日。因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202#xff0c;恰好是一个回文数。我们称这样的日期是回文日期。
有人表示 20200202 是 “千年一遇…题目描述 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(qian1||((qian1)(bai2)))continue;if(((qian0)(bai0)))continue;if((((qian0)(bai1))||((qian0)(bai3))||((qian0)(bai5))||((qian0)(bai7))||((qian0)(bai8))||((qian1)(bai0))||((qian1)(bai2)))) if(ri31)continue;if((((qian0)(bai4))||((qian0)(bai6))||((qian0)(bai9))||((qian1)(bai1))))if(ri30)continue;nian i/10000;if(((nian%40)(nian%100!0))||(nian%400 0)){if((((qian0)(bai2)))(ri29))continue;}else{if((((qian0)(bai2)))(ri28))continue;}做完上面全部工作后我们得到的日期就是一个比较正常的日子了现在就开始判断这个数是否是满足回文序列如果满足我们就输出 完整代码如下编译器是dev语言是C语言
#include stdio.h
#include stdlib.hint main(int argc, char *argv[])
{// 请在此输入您的代码int ge,shi,bai,qian,wan,shiwan,baiwan,qianwan,nian,yue,ri;int test,control0,d 0;scanf(%d,test);for(int itest1;i99999999;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(qian1||((qian1)(bai2)))continue;if(((qian0)(bai0)))continue;if((((qian0)(bai1))||((qian0)(bai3))||((qian0)(bai5))||((qian0)(bai7))||((qian0)(bai8))||((qian1)(bai0))||((qian1)(bai2)))) if(ri31)continue;if(ri 0)continue;if((((qian0)(bai4))||((qian0)(bai6))||((qian0)(bai9))||((qian1)(bai1))))if(ri30)continue;nian i/10000;if(((nian%40)(nian%100!0))||(nian%400 0)){if((((qian0)(bai2)))(ri29))continue;}else{if((((qian0)(bai2)))(ri28))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);d1;break;}}return 0;
}