第十三届蓝桥杯大赛软件类省赛(2022)
试题A:星期计算【填空题】
【问题描述】
已知今天是星期六,请问 20^22 天后是星期几?
注意用数字 1 到 7 表示星期一到星期日
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
int ans = 1;
for (int i = 0; i < 22; i++) {
ans = ans * 20 % 7;
}
int result = (6 + ans) % 7;
System.out.println(result == 0 ? 7 : result);
}
}
输出结果:7
试题 B: 山【填空题】
【问题描述】
这天小明正在学数数。
他突然发现有些正整数的形状像一座“山”,比如 123565321 、 145541 ,它们左右对称(回文)且数位上的数字先单调不减,后单调不增。
小明数了很久也没有数完,他想让你告诉他在区间[2022,2022222022]中有多少个数的形状像一座“山”。
public class Main {
public static void main(String[] args) {
int cnt = 0;
for (int i = 2022; i <= 2022222022; i++) {
if (isPalindromeAndMonotonous(i)) {
cnt++;
}
}
System.out.println(cnt);
}
public static boolean isPalindromeAndMonotonous(int num) {
char[] chs = ("" + num).toCharArray();
int start = 0;
int end = chs.length - 1;
while (start < end) {
if (chs[start] != chs[end] || chs[start] > chs[start + 1]) {
return false;
}
start++;
end--;
}
return true;
}
}
试题C:字符统计【编程题】
【问题描述】
给定一个只包含大写字母的字符串S,请你输出其中出现次数最多的字母。如果有多个字母均出现了最多次,按字母表顺序依次输出所有这些字母。
【输入格式】
一个只包含大写字母的字符串S.
【输出格式】
若干个大写字母,代表答案。
【样例输入】
BABBACAC
【样例输出】
AB
【代码】
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
char[] chs = scanner.nextLine().toCharArray();
int[] counts = new int[26];
for (int i = 0; i < chs.length; i++) {
counts[chs[i] - 'A'] += 1;
}
int max = counts[0];
String result = "A";
for (int i = 1; i < counts.length; i++) {
if (counts[i] > max) {
max = counts[i];
result = "" + (char) (i + 'A');
} else if (counts[i] == max) {
result += (char) (i + 'A');
}
}
System.out.println(result);
}
}