当前位置:   article > 正文

【22年蓝桥杯】十三届蓝桥杯真题JavaB组解析+代码(带你复习知识点)(一)_蓝桥杯真题java组

蓝桥杯真题java组

试题 A: 星期计算 【填空题】

在这里插入图片描述
答案:7
解析:直接对所给数进行取余,然后直接再加6(注意:不能直接让20^22+6再对7进行取余操作,这是不对的,这个6可以看成已经取余过了。) 直接取余的话可以使用java自带的Math.pow(数,次方),或者使用BigInteger(BigInteger和int的区别就是前者范围没有限制,所以可以直接使用)。
实现代码:
方法一:使用BigInteger


public class one {
	public static void main(String[] args) {
		BigInteger bigInteger = BigInteger.valueOf(20).pow(22).mod(BigInteger.valueOf(7));
		int ha = (bigInteger.intValue()+6)%7;
		System.out.println(ha);
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

方法二:直接使用Math.pow()

	public static void main(String[] args) {
		System.out.println(Math.pow(20, 22)%7+6);
	}
  • 1
  • 2
  • 3

试题 B: 山 【填空题】

在这里插入图片描述
答案:3138
解析:通过分析这道题,虽然给的是一个范围,但是考的还是判断一个数是否是回文数且前一半是不递减,我们实现判断回文和不递减方法后,通过一个for循环便可以求出结果。因为数据量比较大,所以比较耗时,大概快一分钟。
实现代码:
方法一:判断是否回文字符串使用双指针进行判断:

public class two {
	public static void main(String[] args) {
		int count = 0;
		for(int i =2022;i<=2022222022;i++) {
			if(check(i) && isHuiWen(i)) {
				count++;
			}
		}
		System.out.println(count);
	}
	private static boolean check(int num) {
		String s = num+"";
		for(int i =0;i<s.length()/2;i++) {
			if(s.charAt(i)>s.charAt(i+1)) return false;
		}
		return true;
	}
	private static boolean isHuiWen(int num) {
		String s = num+"";
		for(int i =0,r=s.length()-1;i<r;i++,r--) {
			if(s.charAt(i) != s.charAt(r)) return false;
		}
		return true;
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

方法二:使用StringBuilder.reverse().toString.equals()来判断
这里补充一下三者用法区别:
在这里插入图片描述

public class two {
	public static void main(String[] args) {
		int count = 0;
		for(int i =2022;i<=2022222022;i++) {
			if(check(i) && isHuiWen1(i)) {
				count++;
			}
		}
		System.out.println(count);
	}
	private static boolean check(int num) {
		String s = num+"";
		for(int i =0;i<s.length()/2;i++) {
			if(s.charAt(i)>s.charAt(i+1)) return false;
		}
		return true;
	}
	private static boolean isHuiWen1(int num) {
		String snum = num+"";
		StringBuilder stringBuilder = new StringBuilder(snum);
		return stringBuilder.reverse().toString().equals(snum);
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

试题 C: 字符统计【代码题】

在这里插入图片描述
分析:方法一:可以通过定义一个容量为26的数组来记录每个字符出现的次数,然后查找出次数最大的字符,通过遍历一遍for循环,来使按照字母表顺序输出。
补充知识点:
键盘输入的时候,next和nextline的区别,因为可能输入空的字符串,所以这里使用nextline来进行接收。
在这里插入图片描述

代码实现:

public class three {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String str = scanner.nextLine();
		int[] arr = new int[26];
		String str1 = "";
		for(int i =0;i<str.length();i++) {
			arr[str.charAt(i)-'A']++;
		}
		int max = Integer.MIN_VALUE;
		for(int i =0;i<26;i++) {
			max = Math.max(max, arr[i]);
		}
		for(int i=0;i<26;i++) {
			if(arr[i] == max) {
				str1=str1+""+(char)(i+'A');
			}
		}
		System.out.println(str1);
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/73629
推荐阅读
相关标签
  

闽ICP备14008679号