Day4
第一题
第十届2019年蓝桥杯国赛
奇数倍数
JavaC组第1题
填空题
直接暴力枚举,依旧是循环标签的使用。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
outer:
for (int i = 2019;
;
i += 2019) { // i必定是2019的倍数,所以循环条件每次可以直接+2019
int x = i;
while (x > 0) {
if (x % 10 % 2 == 0) continue outer;
// 回到最外层循环
x /= 10;
}
System.out.print(i);
break;
}
}
}
第二题 第九届2018年蓝桥杯省赛
第几个幸运数字
JavaC组第4题
填空题
【#|蓝桥杯31天冲刺打卡题解(Day4)】同样暴力枚举,三层循环分别枚举3、5、7的倍数,求3 i ? 5 j ? 7 k 3^{i}·5^{j}·7^{k} 3i?5j?7k 有多少值小于59084709587505 59084709587505 59084709587505 。
public class Main {
public static void main(String[] args) {
long n = 59084709587505l;
int ans = 0;
for (int i = 0;
Math.pow(3, i) < n;
i++) // 枚举3的倍数
for (int j = 0;
Math.pow(5, j) < n;
j++) // 枚举5的倍数
for (int k = 0;
Math.pow(7, k) < n;
k++) // 枚举7的倍数
if (Math.pow(3, i) * Math.pow(5, j) * Math.pow(7, k) < n) // 满足3^i x 5^j × 7^k的有几个数
ans++;
System.out.println(ans);
}
}
第三题 第七届2016年蓝桥杯省赛
四平方和
之前用二分写过这题的题解,可参考这篇:蓝桥杯AcWing学习笔记 2-1二分的学习
题解写的很详细,三种代码:三层循环暴搜(超时)、用类存值二分(超时)、用集合存值二分(AC),还有蓝桥评测的分数。
第四题(选做) 第十届2019年蓝桥杯国赛
迷宫
JavaB组第5题
填空题
看到最小步数,又是走迷宫,自然就想到用bfs,当然题中还有要求路径的字典序最小,所以在搜索的时候我们就可以按照字典序来搜索。
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {static final int N = 30, M = 50;
static char[][] map = new char[N][M];
// 存迷宫
static boolean[][] st = new boolean[N][M];
// 记录是否遍历过 false未遍历 true已遍历public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for (int i = 0;
i < N;
i++) map[i] = sc.next().toCharArray();
bfs();
}private static void bfs() {
Queue q = new LinkedList<>();
q.offer(new Point(0, 0, ""));
st[0][0] = true;
int[] dx = {1, 0, 0, -1}, dy = {0, -1, 1, 0};
// 存偏移量
char[] c = {'D', 'L', 'R', 'U'};
while (!q.isEmpty()) {
Point t = q.poll();
if (t.x == N - 1 && t.y == M - 1) {
System.out.print(t.s);
}for (int i = 0;
i < 4;
i++) {
int x = t.x + dx[i], y = t.y + dy[i];
if (x < 0 || x >= N || y < 0 || y >= M) continue;
// 出界
if (map[x][y] == '0' && !st[x][y]) {
q.offer(new Point(x, y, t.s + c[i]));
st[x][y] = true;
}
}
}}static class Point {
int x;
int y;
String s;
// D、U、L、Rpublic Point(int x, int y, String s) {
this.x = x;
this.y = y;
this.s = s;
}
}
}
推荐阅读
- 蓝桥杯|蓝桥冲刺31天打卡—Day11
- #|蓝桥杯31天冲刺打卡题解(Day11)
- Java14新特性及代码示例
- Kafka 怎么顺序消费(面试必备。。。)
- Java12新特性及代码示例
- 蓝桥杯python题解|蓝桥杯-矩阵切割-python题解
- Java|Java面试突击系列(十二)(数据库分库分表的面试连环炮)
- JAVA|Mybatis-plus 的代码生成器 Demo
- python|idea在创建实体类的时候自动加上lombok注解和时间作者等注释