目录
第 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 题:迷宫
跑个步回来补题