第十一届蓝桥杯A组省赛试题 G: 回文日期(Java)

简介: 第十一届蓝桥杯A组省赛试题 G: 回文日期(Java)

试题 G: 回文日期

时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分


【问题描述】

2020年春节期间,有一个特殊的日期引起了大家的注意:2020年2月2日。因为如果将这个日期按 yyyymmdd 的格式写成一个8位数是 20200202 ,恰好是一个回文数。我们称这样的日期是回文日期。


有人表示 20200202 是“千年一遇”的特殊日子。对此小明很不认同,因为不到2年之后就是下一个回文日期:20211202 即2021年12月2日。


也有人表示 20200202 并不仅仅是一个回文日期,还是一个 ABABBABA 型的回文日期。对此小明也不认同,因为大约 100 年后就能遇到下一个 ABABBABA 型的回文日期:21211212 即2121年12月12日。算不上“千年一遇”,顶多算“千年两遇”。


给定一个8位数的日期,请你计算该日期之后下一个回文日期和下一个 ABABBABA 型的回文日期各是哪一天。


【输入格式】

输入包含一个八位整数 ,表示日期。


【输出格式】

输出两行,每行1个八位数。

第一行表示下一个回文日期,第二行表示下一个 型的回文日期。


【样例输入】

20200202


【样例输出】

20211202

21211212


【评测用例规模与约定】

对于所有评测用例,10000101<=N<=89991231, 保证 N 是一个合法日期的 8 位数表示。


【思路】

需要判断是否是闰年,是否是回文日期,是否是ABAB型回文日期,然后就是暴力。


【Java代码】


import java.util.Scanner;
public class Main {
  //判断是否是闰年
  static boolean isLeap(int year) {
  if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) return true;
  return false;
  }
  //判断是否是回文日期
  static boolean isHui(String string) {
  if (string.charAt(0) == string.charAt(7) && string.charAt(1) == string.charAt(6) && string.charAt(2) == string.charAt(5) && string.charAt(3) == string.charAt(4)) return true;
  return false;
  }
  //判断是否是ABAB型回文日期
  static boolean isABAB(String string) {
  if (isHui(string) && string.charAt(0) == string.charAt(2) && string.charAt(1) == string.charAt(3)) return true;
  return false;
  }
  public static void main(String[] args) {
  Scanner scanner = new Scanner(System.in);
  int[] dayTotal = {0,31,28,30,31,30,31,30,31,30,31,30,31}; //每月多少天
  int input = scanner.nextInt();
  int year = input / 10000;
  int mouth = input % 10000 / 100;
  int day = input % 100 + 1; //加一是为了下面循环里面从下一天开始判断(即当天+1)
  if (isLeap(year)) {
    dayTotal[2] = 29; //闰年2月有29天
  }
  int res[] = new int[2]; //用来记录符合结果的两个回文日期
  boolean flag1 = false, flag2 = false; //用来标志是否找到需要的回文日期
label1: for (int i = year; i <= 9999; i++, mouth = 1, day = 1) {
    for (int j = mouth; j <= 12; j++, day = 1) {
    for (int k = day; k <= dayTotal[j]; k++) {
      int string = i*10000 + j*100 + k;
      if (isHui(string + "") && flag1 == false) {
      flag1 = true;
      res[0] = string;
      }
      if (isABAB(string + "") && flag2 == false) {
      flag2 = true;
      res[1] = string;
      }
      if (flag1 == true && flag2 == true) {
      break label1; //两个都找到就可以结束了
      }
    }
    }
  }
  System.out.println(res[0]);
  System.out.println(res[1]);
  }
}


相关文章
|
9月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
345 0
|
监控 Java API
Java语言按文件创建日期排序及获取最新文件的技术
这段代码实现了文件创建时间的读取、文件列表的获取与排序以及获取最新文件的需求。它具备良好的效率和可读性,对于绝大多数处理文件属性相关的需求来说足够健壮。在实际应用中,根据具体情况,可能还需要进一步处理如访问权限不足、文件系统不支持某些属性等边界情况。
498 14
|
11月前
|
安全 Java API
Java日期时间API:从Date到Java.time
本文深入解析了Java 8中引入的全新日期时间API,涵盖LocalDate、LocalTime、LocalDateTime、ZonedDateTime等核心类的使用,以及时间调整、格式化、时区处理和与旧API的互操作。通过实例对比,展示了新API在可变性、线程安全与易用性方面的显著优势,并提供迁移方案与实战技巧,助你掌握现代Java时间处理的最佳实践。
|
算法 搜索推荐 Java
【潜意识Java】深度解析黑马项目《苍穹外卖》与蓝桥杯算法的结合问题
本文探讨了如何将算法学习与实际项目相结合,以提升编程竞赛中的解题能力。通过《苍穹外卖》项目,介绍了订单配送路径规划(基于动态规划解决旅行商问题)和商品推荐系统(基于贪心算法)。这些实例不仅展示了算法在实际业务中的应用,还帮助读者更好地准备蓝桥杯等编程竞赛。结合具体代码实现和解析,文章详细说明了如何运用算法优化项目功能,提高解决问题的能力。
778 6
|
算法 Java C++
【潜意识Java】蓝桥杯算法有关的动态规划求解背包问题
本文介绍了经典的0/1背包问题及其动态规划解法。
567 5
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
347 26
|
Java API 调度
Java 日期与时间处理:精准掌控时间流转
Java 8引入了全新的日期和时间API,解决了旧版`java.util.Date`和`Calendar`类设计不佳、操作繁琐的问题。新API包括`LocalDate`、`LocalTime`和`LocalDateTime`类,操作简洁直观,符合日常思维习惯。同时提供了`Period`和`Duration`处理时间间隔,以及`DateTimeFormatter`进行格式化输出。这些改进使开发者能更高效、准确地处理日期和时间,极大提升了开发效率与代码质量。 (239字符)
375 6
|
安全 Java API
告别SimpleDateFormat:Java 8日期时间API的最佳实践
在Java开发中,处理日期和时间是一个基本而重要的任务。传统的`SimpleDateFormat`类因其简单易用而被广泛采用,但它存在一些潜在的问题,尤其是在多线程环境下。本文将探讨`SimpleDateFormat`的局限性,并介绍Java 8引入的新的日期时间API,以及如何使用这些新工具来避免潜在的风险。
373 5
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
313 0
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
264 0