【蓝桥杯常考题型汇总】

一.日期类

相关资料集锦:

蓝桥杯日期类模板(超详解)_蓝桥杯日期问题-CSDN博客

        2016 回文日期【枚举、模拟】

1.题目:

在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。

牛牛习惯用 8 位数字表示一个日期,其中,前 4 位代表年份,接下来 2 位代表月份,最后 2 位代表日期。

显然:一个日期只有一种表示方法,而两个不同的日期的表示方法不会相同。

牛牛认为,一个日期是回文的,当且仅当表示这个日期的8位数字是回文的。

现在,牛牛想知道:在他指定的两个日期之间(包含这两个日期本身),有多少个真实存在的日期是回文的。

一个 8 位数字是回文的,当且仅当对于所有的 i(1≤i≤8) 从左向右数的第i个数字和第 9−i 个数字(即从右向左数的第 i 个数字)是相同的。

例如:

•对于2016年11月19日,用 8 位数字 20161119 表示,它不是回文的。

•对于2010年1月2日,用 8 位数字 20100102 表示,它是回文的。

•对于2010年10月2日,用 8 位数字 20101002 表示,它不是回文的。

输入格式
输入包括两行,每行包括一个8位数字。

第一行表示牛牛指定的起始日期date1,第二行表示牛牛指定的终止日期date2。保证date1和date2都是真实存在的日期,且年份部分一定为4位数字,且首位数字不为0。

保证date1一定不晚于date2。

输出格式
输出共一行,包含一个整数,表示在date1和date2之间,有多少个日期是回文的。

输入样例:

20110101
20111231

输出样例:

1


2.思路

        这个题如果使用暴力解法以此遍历每一天,时间复杂度会比较高;所以可以直接先利用年份生成一个回文日期,然后判断这个日期是否符合标准的日期

        枚举法的基本思想是:逐一列举问题所涉及的所有情形,并根据问题提出的条件检验哪些是问题的解,哪些应予排除。


3.代码

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
   static int  days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    static boolean check(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=0;
            if((year%4==0&&year%100!=0)||year%400==0) leap++;
            if (day>days[2]+leap) return false; //注意这里        }
        return  true;
    }
    public static void main(String[] args) {
       Scanner cin=new Scanner(System.in);
        int date1=cin.nextInt();
        int date2=cin.nextInt();
        int res=0;
        for(int i=1000;i<10000;i++) {//年份 之后翻转
            int y=i, x=i;
            for(int j=0;j<4;j++)  {
                y=y*10+x%10;
                x=x/10;
            }
            if(check(y)&&date1<=y&&y<=date2) res++;

        }
        System.out.println(res);

    }
}

1)check函数来判断这个日期是不是一个正常的日期格式
一个数除几个0,就是忽略掉这个数后面的几位
一个数mod几个0,就是拿到这个数后面的几位

2) if (day>days[2]+leap) return false

    注意这里不是   day!=days[2]+leap   因为比他小也可以


相关推荐

  1. 考题汇总

    2024-03-22 12:50:01       46 阅读
  2. 用模板

    2024-03-22 12:50:01       31 阅读
  3. 考试技巧(自用)

    2024-03-22 12:50:01       49 阅读
  4. 考试注意事项

    2024-03-22 12:50:01       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-22 12:50:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-22 12:50:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-22 12:50:01       87 阅读
  4. Python语言-面向对象

    2024-03-22 12:50:01       96 阅读

热门阅读

  1. QT(19)-QNetworkRequest

    2024-03-22 12:50:01       44 阅读
  2. docker基础(四)之docker run(第一弹)

    2024-03-22 12:50:01       37 阅读
  3. Ubuntu下搭建UEFI下PXE服务端(详细)总结

    2024-03-22 12:50:01       42 阅读
  4. Redis 常用数据类型,各自的使用场景是什么?

    2024-03-22 12:50:01       38 阅读
  5. 智能驾驶安全包含哪些内容?

    2024-03-22 12:50:01       48 阅读