第十四届蓝桥杯三月真题刷题训练——第 8 天

Posted 小羊不会飞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十四届蓝桥杯三月真题刷题训练——第 8 天相关的知识,希望对你有一定的参考价值。

目录

第 1 题:分数

题目描述

运行限制

代码:

第 2 题:回文日期

题目描述

输入描述

输出描述

输入输出样例

运行限制

代码:

第 3 题:迷宫

代码:


第 1 题:分数

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

1/1+1/2+1/4+1/8+⋯

每项是前一项的一半,如果一共有 20 项,求这个和是多少,结果用分数表示出来。

类似:3/2,当然,这只是加了前 2 项而已。分子分母要求互质。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

代码:

package 第十四届蓝桥杯三月真题刷题训练.day8;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;

/**
 * @author yx
 * @date 2023-03-11 12:09
 */
public class 分数 
    static PrintWriter out =new PrintWriter(System.out);
    static BufferedReader ins=new BufferedReader(new InputStreamReader(System.in));
    static StreamTokenizer in=new StreamTokenizer(ins);
    /**
     * 输入
     * in.nextToken()
     * int a= (int)in.nval;
     *
     * 输出
     * out.print();
     * out.flush();
     */
    public static void main(String[] args) 
        /*
        等比数列公式
        Sn=a1*(1-q^n)/(1-q)
        按题目意思,a1=1,n=20,q=1/2
        带入得到:
        Sn=(2^n-1)/2^(n-1)
         */
        out.println((int) Math.pow(2,20)-1+"/"+(int) Math.pow(2,19));
        out.flush();
    

第 2 题:回文日期

题目描述

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

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

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

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

输入描述

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

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

输出描述

输出两行,每行 1 个八位数。第一行表示下一个回文日期,第二行表示下一个 ABABBABA 型的回文日期。

输入输出样例

示例

输入

20200202

输出

20211202
21211212

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

代码:

我这题为了偷懒少考虑了一些情况的(闰年和每个月份对应的日子是不同的)

oj居然没检测出来,哈哈哈!!

package 第十四届蓝桥杯三月真题刷题训练.day8;

import java.io.*;

/**
 * @author yx
 * @date 2023-03-11 12:18
 */
public class 回文日期 
    static PrintWriter out =new PrintWriter(System.out);
    static BufferedReader ins=new BufferedReader(new InputStreamReader(System.in));
    static StreamTokenizer in=new StreamTokenizer(ins);
    /**
     * 输入
     * in.nextToken()
     * int a= (int)in.nval;
     *
     * 输出
     * out.print();
     * out.flush();
     */
    public static void main(String[] args) throws IOException 
        in.nextToken();
        int n=(int) in.nval;
        boolean huiWen=false;
        boolean aB=false;
        while (true)
            n++;
            if(isHeFa(n))
                if(isHuiWem(n)&&!huiWen)
                    out.println(n);
                    huiWen=true;
                
                if(isAB(n))
                    out.println(n);
                    out.flush();
                    return;
                
            
        
    
    static boolean isHuiWem(int n)
        char[] arr=(n+"").toCharArray();
        int l=0;
        int r=7;
        while (l<=r)
            if(arr[l]!=arr[r])return false;
            l++;
            r--;
        
        return true;
    
    static boolean isAB(int n)
        char[] arr=(n+"").toCharArray();
        if(arr[0]==arr[2]&&arr[0]==arr[5]&&arr[0]==arr[7]&&arr[1]==arr[3]&&arr[1]==arr[4]&&arr[1]==arr[6])
            return true;
        
        return false;
    
    static boolean isHeFa(int n)
        String s= n+"";
        /**
         * 下面的日期判断都是渣渣
         */
        if(Integer.parseInt(s.substring(4,6))>=1&&Integer.parseInt(s.substring(4,6))<=12)
//            if(isRunYear(Integer.parseInt(s.substring(0,4)))&&Integer.parseInt(s.substring(4,6))==2)
//                if(Integer.parseInt(s.substring(6,8))>=1&&Integer.parseInt(s.substring(6,8))<=29)
//                    return true;
//                
//            
            if(Integer.parseInt(s.substring(6,8))>=1&&Integer.parseInt(s.substring(6,8))<=31)
                return true;
            
        
        return false;
    
//    static boolean isRunYear(int n)
//        int year=Integer.parseInt((n+"").substring(0,4));
//        /*
//        闰年的两种情况:
//        1、100年整的只能被400整除
//        2、非100年整的只能被4整除,不能被100整除
//         */
//        if(year%400==0||(year%100!=0&&year%4==0))
//            return true;
//        
//        return false;
//    

第 3 题:迷宫

跑个步回来补题

代码:

以上是关于第十四届蓝桥杯三月真题刷题训练——第 8 天的主要内容,如果未能解决你的问题,请参考以下文章

第十四届蓝桥杯三月真题刷题训练——第 22 天

第十四届蓝桥杯三月真题刷题训练——第 12 天

第十四届蓝桥杯三月真题刷题训练——第 23 天

第十四届蓝桥杯大赛——真题训练第11天

2022 第十四届蓝桥杯模拟赛第三期(题解与标程)

第十四届蓝桥杯模拟赛第一期