蓝桥杯上岸每日N题 第一期(一)!!!

大家好 我是寸铁💪

考前需要刷大量真题,大家一起相互监督,每日做N题,一起上岸吧✌️ ~

第一期(一)

题目:回文日期 ✨

考点:枚举+模拟 💪

该题目类型会同时收录在相关复习专题,供大家学习

收录👇

蓝桥杯上岸必刷!!!(日期专题+保姆级教学)

冲刺蓝桥杯省一模板大全来啦 💥 ~

蓝桥杯4月8号就要开始了 🙏 ~

还没背熟模板的伙伴们背起来 💪 💪 💪

祝大家4月8号蓝桥杯上岸 ☀️ ~

不清楚蓝桥杯考什么的点点下方👇

考点秘籍

想背纯享模版的伙伴们点点下方👇

蓝桥杯省一你一定不能错过的模板大全(第一期)

蓝桥杯省一你一定不能错过的模板大全(第二期)

想背注释模版的伙伴们点点下方👇

蓝桥杯必背第一期

蓝桥杯必背第二期

往期精彩回顾

操作系统期末题库 第九期(完结)

LeetCode Hot100 刷题(第三期)

idea创建SpringBoot项目报错解决方案

数据库SQL语句(期末冲刺)

想看JavaB组填空题的伙伴们点点下方 👇

填空题

题目描述

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 型的回文日期。

看到题目直接开背模板

java 复制代码
static int d[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
public static boolean check(int date){
int year=date/10000;
int month=date/1000%100;
int day=date%100;
//先判断月份是否合法
if(month==0)return false;
if(day==0||month!=2&&day>d[month])return false;
if(month==2){
int leap=0;
if(year%100!=0&&year%4==0||year%400==0)leap=1;
if(day>28+leap)return false;
}
return true;
}

模板详见如下:

蓝桥杯上岸必刷!!!(日期专题+保姆级教学)

每日N题 回文日期

话不多说直接套模板,直接过了80%100的样例。

应该是有一些细节没考虑到,不过还是很开心(第一次套模板直接写出的题目)

蓝桥对于基础题还是需要细心一些尽可能地通过。

背模板(过8/10的样例)

java 复制代码
import java.util.*;
public class Main{
	static int d[]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
	public static boolean check(int date) {
	    int year= date/10000;
	    int month=date%10000/100;
	    int day=date%100;
		if(month==0||month>12)return false;
        if(day==0||month!=2&&day>d[month])return false;
        if(month==2) {
        	int leap=0;
        	if(year%100!=0&&year%4==0||year%400==0)leap=1;
        	if(day>28+leap)return false;
        }
	
	return true;	
	}
	public static void main(String []args) {
	Scanner sc=new Scanner(System.in);
	int x =sc.nextInt();
	int st=x/10000;
	//先截取出年的数值
	//便于去枚举回文串
	int date1=10000101;
	int date2=89991231;
	//枚举回文串
    for(int i=st+1;i<=8999;i++) {
        //从下一年开始循环
        //最小的四位即先截取出年的数值+1到8999
        int date=i;
        int a=date;
    	for(int j=0;j<4;j++) {
		date=date*10+a%10;
		a/=10;
	}
	//检验回文串是否合法
	if(date1<=date&&date<=date2&&check(date)) {
		System.out.println(date);
		break;
	}
    }
    //ABAB型
    int date=st;
     for(int i=st+1;i<=8999;i++) {
        //从下一年开始循环
        //最小的四位即先截取出年的数值+1到8999
        //ABAB
        String s=String.valueOf(i);
        int a1=s.charAt(0)-'0';
        int b1=s.charAt(1)-'0';
        int a2=s.charAt(2)-'0';
        int b2=s.charAt(3)-'0';
        if(a1==a2&&b1==b2){
        date=i;
        int a=date;
    	for(int j=0;j<4;j++) {
		date=date*10+a%10;
		a/=10;
	}
    }
	//检验回文串是否合法
	if(date1<=date&&date<=date2&&check(date)) {
		System.out.println(date);
		break;
	}
    }
	}
}

Acccode

java 复制代码
#include <iostream>
using namespace std;
typedef long long int ll;
ll date;
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

bool panding(int date)
{
    int year=date/10000;
    int month=date/100%100;
    int day=date%100;
    if(month==0||month>12) return false;
    if(day==0||month!=2&&day>days[month])return false;
    if(month==2)
    {
        int leap=year%400||year%4==0&&year%100!=0;
        if(day>28+leap)
        {
            return false;
        }
    }
    return true;
}
bool pandingab(int date)
{
    int year=date/10000;
    int a=year/1000;
    int b=year/100%10;
    int c=year/10%10;
    int d=year%10;

        if(a==c&&b==d)return 1;
return 0;
}
int main()
{
cin>>date;
int cp=date/10000;
int flag=0;
for(int i=cp;i<=9999;i++)
{
    int pandate=i,x=i;
    for(int j=0;j<4;j++) pandate=pandate*10+(x%10),x/=10;
    if(panding(pandate)&&flag==0&&pandate!=date)
    {
        cout<<pandate<<endl;
        flag=1;
    }
    if(flag==1&&panding(pandate)&&pandingab(pandate)&&pandate!=date)
    {
        cout<<pandate<<endl;
        flag=2;

    }
    if(flag==2)
    {
        break;
    }
}
  return 0;
}

☀️☀️☀️☀️☀️☀️

后续有补充,持续更新中🌋

喜欢的伙伴点点赞,关个注💗

相关推荐
西岭千秋雪_9 分钟前
Redis性能优化
数据库·redis·笔记·学习·缓存·性能优化
chuanauc12 分钟前
Kubernets K8s 学习
java·学习·kubernetes
满分观察网友z14 分钟前
从一次手滑,我洞悉了用户输入的所有可能性(3330. 找到初始输入字符串 I)
算法
一头生产的驴28 分钟前
java整合itext pdf实现自定义PDF文件格式导出
java·spring boot·pdf·itextpdf
YuTaoShao35 分钟前
【LeetCode 热题 100】73. 矩阵置零——(解法二)空间复杂度 O(1)
java·算法·leetcode·矩阵
Heartoxx36 分钟前
c语言-指针(数组)练习2
c语言·数据结构·算法
zzywxc78738 分钟前
AI 正在深度重构软件开发的底层逻辑和全生命周期,从技术演进、流程重构和未来趋势三个维度进行系统性分析
java·大数据·开发语言·人工智能·spring
大熊背1 小时前
图像处理专业书籍以及网络资源总结
人工智能·算法·microsoft
HuashuiMu花水木1 小时前
Matplotlib笔记4----------图像处理
图像处理·笔记·matplotlib
满分观察网友z1 小时前
别怕树!一层一层剥开它的心:用BFS/DFS优雅计算层平均值(637. 二叉树的层平均值)
算法