2021年第十二届蓝桥杯 Java B 组省赛填空题解析
第十二届蓝桥杯 Java B 组省赛填空题解析
第一题
【问题描述】
已知大写字母 AAA 的 ASCIIASCIIASCII 码值为 656565, 那么大写字母 LLL 的 ASCIIASCIIASCII 码值为多少?
【思路】
签到题
【代码】
public class Q1 {public static void main(String[] args) {System.out.println((int) ('A'));}
}
【答案】
76
第二题
【问题描述】
【思路】
用数组记录每个数字使用的次数,当拼到 iii 时的某一位数字不够用,则答案为 i−1i - 1i−1
【代码】
import java.util.Arrays;public class Q2 {static int[] a = new int[10];static boolean check(int num) {while (num > 0) {int x = num % 10;if (--a[x] < 0)return false;num /= 10;}return true;}public static void main(String[] args) {Arrays.fill(a, 2021);int i = 0;while (true) {if (!check(++i))break;}System.out.println(i - 1);}
}
【答案】
3181
第三题
【问题描述】
【思路】
我们可以根据任意两个点确定一条直线
1)当直线不平行于 xxx 轴和 yyy 轴时,可以表示为 y=kx+by=kx+by=kx+b 的形式
设两点为 p1(x1,y1),p2(x2,y2)p1(x1,y1),p2(x2,y2)p1(x1,y1),p2(x2,y2) x1≠x2且y1≠y2x1 \neq x2 且 y1\neq y2x1=x2且y1=y2 则有
y−y1=((y2−y1)/(x2−x1))∗(x−x1)y-y1=((y2-y1)/(x2-x1))*(x-x1)y−y1=((y2−y1)/(x2−x1))∗(x−x1)
令 y2−y1=dy,x2−x1=dxy2-y1=dy,x2-x1=dxy2−y1=dy,x2−x1=dx
k=dy/dxk=dy/dxk=dy/dx
b=(y1∗dx−x1∗dy)/dxb=(y1*dx-x1*dy)/dxb=(y1∗dx−x1∗dy)/dx
将得到的 kkk 和 bbb 存入 setsetset 中
2)当直线平行于 xxx 轴和 yyy 轴时,只需要加上 xxx 轴和 yyy 轴上的点数
【代码】
1)分数表示,由于浮点数存在精度问题,可以使用分数表示 kkk 和 bbb
import java.util.HashSet;
import java.util.Set;public class Q3 {static int n = 20;static int m = 21;static Set<String> set = new HashSet<>();static int gcd(int x, int y) {return y == 0 ? x : gcd(y, x % y);}public static void main(String[] args) {for (int x1 = 0; x1 < n; x1++) {for (int y1 = 0; y1 < m; y1++) {for (int x2 = 0; x2 < n; x2++) {for (int y2 = 0; y2 < m; y2++) {if (x1 == x2 || y1 == y2) continue;int dy = y2 - y1;int dx = x2 - x1;int g1 = gcd(dx, dy);// 需要将 dy 和 dx 约分String k = (dy / g1) + "/" + (dx / g1);int t = y1 * dx - x1 * dy;int g2 = gcd(t, dx);String b = (t / g2) + "/" + (dx / g2);set.add(k + "," + b);}}}}// 别忘了加上平行于 x 轴和 y 轴的直线System.out.println(set.size() + n + m);}
}
- 浮点数表示
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;public class Q3Beta {static int n = 20;static int m = 21;// 精度static double d = 0.000001;static Set<Line> set = new HashSet<>();static class Line {double k;double b;public Line(double k, double b) {this.k = k;this.b = b;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Line line = (Line) o;return Math.abs(line.k - k) < d &&Math.abs(line.b - b) < d;}@Overridepublic int hashCode() {return Objects.hash((int)k, (int)b);}}public static void main(String[] args) {for (int x1 = 0; x1 < n; x1++) {for (int y1 = 0; y1 < m; y1++) {for (int x2 = 0; x2 < n; x2++) {for (int y2 = 0; y2 < m; y2++) {if (x1 == x2 || y1 == y2) continue;double dy = y2 - y1;double dx = x2 - x1;double k = dy / dx;double b = (y1 * dx - x1 * dy) / dx;set.add(new Line(k, b));}}}}System.out.println(set.size() + n + m);}
}
【答案】
40257
第四题
【问题描述】
【思路】
若长宽高为 ABCABCABC 形,则有 666 种方案,即 ABC,ACB,BAC,BCA,CAB,CBAABC,ACB,BAC,BCA,CAB,CBAABC,ACB,BAC,BCA,CAB,CBA
若为 AABAABAAB 形, 则有 333 种方案,即 AAB,ABA,BAAAAB,ABA,BAAAAB,ABA,BAA
若为 AAAAAAAAA 形,则只有 111 种方案
由此可知,
当为 ABCABCABC 形时,设 L<W<HL<W<HL<W<H
则 LLL 最大时小于 20210418202104183=126432.415\sqrt[3]{2021041820210418}=126432.41532021041820210418=126432.415, 暴力计算是可以接受的
【代码】
public class Q4 {static long n = 2021041820210418L;static int ans;public static void main(String[] args) {// AAB 和 AAA 形式for (long i = 1; i * i <= n; i++) {if (n % (i * i) != 0) continue;long j = n / (i * i);if (j == i)ans++; // AAA 形式只有一种排列方式elseans += 3; // AAB 形式有三种排列方式}// ABC 形式,i < j < kfor (long i = 1; i * i * i < n; i++) {if (n % i != 0) continue;for (long j = i + 1; j * i < n; j++) {// 若 k = n / (i * j) < j, 则退出循环if (n / (i * j) < j) break;if (n % (i * j) == 0)ans += 6; // ABC 形式有六种排列方式}}System.out.println(ans);}
}
【答案】
2430
第五题
【问题描述】
【思路】
板子题,dijkstradijkstradijkstra 算法
【代码】
import java.util.Arrays;
import java.util.PriorityQueue;public class Q5 {static int[] d = new int[2100];static boolean[] vis = new boolean[2100];static PriorityQueue<Integer> heap = new PriorityQueue<>((o1, o2) -> d[o1] - d[o2]);static int gcd(int x, int y) {return y == 0 ? x : gcd(y, x % y);}static int lcm(int x, int y) {return x * y / gcd(x, y);}static void dijkstra() {Arrays.fill(d, Integer.MAX_VALUE);d[1] = 0;vis[1] = true;for (int i = 2; i <= 22; i++) {d[i] = lcm(1, i);heap.add(i);}while (!heap.isEmpty()) {int v = heap.poll();if (vis[v]) continue;vis[v] = true;if (v == 2021) break;for (int i = Math.max(1, v - 21); i <= Math.min(2021, v + 21); i++) {if (!vis[i]) {d[i] = Math.min(d[i], d[v] + lcm(v, i));heap.add(i);}}}System.out.println(d[2021]);}public static void main(String[] args) {dijkstra();}
}
【答案】
10266837
2021年第十二届蓝桥杯 Java B 组省赛填空题解析相关推荐
- 2021年 第12届 蓝桥杯 Java B组 省赛真题详解及小结【第1场省赛 2021.04.18】
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[题目下载.2013年(第4届)~2020年(第11届)] CSDN 蓝桥杯 专栏 2013年 第04届 蓝桥杯 Java B组 省赛真题详解及小结 ...
- Java C++ 实现第十二届蓝桥杯 C++ B组 省赛真题(希望能和各位佬能一起讨论算法题:讨论群:99979568)
山水有相逢 来日皆可期 告辞 虽然是C++组的,但是和Java组的差不了两道题,大家都可以看一看 如有错误,还请佬 评论或私信指出(写的稍些急) 等后面在补充补充解题思路,在补一套C++实现(已完成, ...
- 【第十二届蓝桥杯国赛真题】2021年第12届蓝桥杯JAVA B组国赛真题
- 2020年 第11届 蓝桥杯 Java B组 省赛真题详解及小结【第1场省赛 2020.7.5】
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:部分 ...
- 2018年 第9届 蓝桥杯 Java B组 省赛真题详解及总结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:部分 ...
- 2021年 第十二届蓝桥杯第二期校内模拟赛题解(Java版)
时隔多日,终于会写一些简单DP了哈哈哈! 稍微改版,方便阅读,若有错,请指出 2019年 第十届蓝桥杯省赛题解(JavaB组版) 2020年 第十一届蓝桥杯第一场省赛题解(JavaB组版) 2020年 ...
- 2020年 第11届 蓝桥杯 Java C组 省赛真题详解及小结【第1场省赛 2020.7.5】
蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...
- 2019年 第10届 蓝桥杯 Java B组 省赛真题详解及总结
蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...
- 2017年 第8届 蓝桥杯 Java B组 省赛真题详解及总结
蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...
最新文章
- Docker镜像优化
- 新手探索NLP(六)——全文检索
- python如何爬虫股票数据_简单爬虫:东方财富网股票数据爬取(python_017)
- C语言 立方体随鼠标转动,HTML5鼠标控制的旋转的立方体
- 自定义组件--创建mxml组件
- 资源向导之 quot;APUEquot;
- [转]30个自我提升技巧
- Windows下部署elasticsearch和kibana
- 对instance进行二次封装
- android selector(转)
- 6. PHP bcompiler
- VUE项目导入bootstrap
- 【干货】Vray渲染器的使用方法
- 三步建立自己的电影网站 1 (安装MacCMS10)
- 【数字图像处理 8】形态学图像处理
- HTML网页设计结课作业——基于HTML+CSS仿学校官网页面
- FLASH大厅安装错误3070修复解决方案
- 谨赠20篇技术热文营造一个不一样的节日气氛!
- 如何利用XGen制作头发,发片-笔记
- 浏览器 重定向次数限制_浏览器重定向(302)限制问题
热门文章
- C语言程序——按照数据由小到大的顺序输出三个数
- CF #737 C. Moamen and XOR
- 30人15个教徒跳海
- 被动抓病毒的日子(1)【入侵大佬:198.46.202.146】 一种针对Linux服务器疑似挖矿病毒流入
- 在VirtualBox上使用Bosh部署Cloud Foundry
- shell 循环语句和函数
- mysql性能优化2
- ios7.1.1固件下载和刷机教程
- android悬浮窗 tab,Android WindowManager悬浮窗
- 【cocos2d-x 3.7 飞机大战】 决战南海I (九) 飘字特效