第十二届蓝桥杯A组省赛填空题Java思路及代码合集(相乘直线货物摆放路径回路计数)

文章目录

    • 试题 A: 相乘
    • 试题 B: 直线
    • 试题 C: 货物摆放
    • 试题 D: 路径
    • 试题 E: 回路计数


试题 A: 相乘

本题总分:5 分

【问题描述】
小蓝发现,他将 1 至 1000000007 之间的不同的数与 2021 相乘后再求除以1000000007 的余数,会得到不同的数。小蓝想知道,能不能在 1 至 1000000007 之间找到一个数,与 2021 相乘后再除以 1000000007 后的余数为 999999999。如果存在,请在答案中提交这个数;如果不存在,请在答案中提交 0。

【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

【思路】
直接暴力,不过记得用long数据类型。

【Java代码】

public class Xiang {public static void main(String[] args) {long  res = 0;for(long i = 1; i <= 1000000007L; i++) {if((i * 2021) % 1000000007L == 999999999L) {res = i;break;}			}System.out.println(res);}
}

【结果】

17812964


试题 B: 直线

本题总分:5 分

【问题描述】
在平面直角坐标系中,两点可以确定一条直线。如果有多点在一条直线上,那么这些点中任意两点确定的直线是同一条。给定平面上 2 × 3 个整点 {(x, y)|0 ≤ x < 2, 0 ≤ y < 3, x ∈ Z, y ∈ Z},即横坐标是 0 到 1 (包含 0 和 1) 之间的整数、纵坐标是 0 到 2 (包含 0 和 2) 之间的整数的点。这些点一共确定了 11 条不同的直线。给定平面上 20 × 21 个整点 {(x, y)|0 ≤ x < 20, 0 ≤ y < 21, x ∈ Z, y ∈ Z},即横坐标是 0 到 19 (包含 0 和 19) 之间的整数、纵坐标是 0 到 20 (包含 0 和 20) 之间的整数的点。请问这些点一共确定了多少条不同的直线。

【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

【思路】
①每个点坐标(x,y),即有两个数据组成,可以使用String类型“x,y”形式存储。使用时split以“,”分开并且使用Integer的ParseInt。
②两点确定一直线使用两点式(y-y1)/(y2-y1)=(x-x1)/(x2-x1)表示直线,转换成标准式(y1-y2)x+(x2-x1)y-y1(x2-x1)+x1(y2-y1)=0。
③对系数和常数进行约分,即求三者最大公因数。
④取唯一,即对于求得结构相同的只算一次,可以考虑使用HashSet存储。

【Java代码】

import java.util.ArrayList;
import java.util.HashSet;public class test {public static void main(String[] args) {//生成存储点ArrayList<String> ps = new ArrayList<>();for (int i = 0; i < 20; i++) {for (int j = 0; j < 21; j++) {//以"x,y"形式存储ps.add(i + "," + j);}}//取点求直线HashSet<String> line = new HashSet<>();//第一层循环取第一个点for (int i = 0; i < ps.size(); i++) {String p1 = ps.get(i);int x1 = Integer.parseInt(p1.split(",")[0]);int y1 = Integer.parseInt(p1.split(",")[1]);//第二层循环取第二个点for (int j = i+1; j < ps.size(); j++) {String p2 = ps.get(j);int x2 = Integer.parseInt(p2.split(",")[0]);int y2 = Integer.parseInt(p2.split(",")[1]);//根据(y1-y2)x+(x2-x1)y-y1(x2-x1)+x1(y2-y1)=0求系数及常数int a = y1 - y2;int b = x2 - x1;int c = x1*(y2-y1)-y1*(x2-x1);//求最大公因数约分int m = gcd(gcd(a, b), c);a /= m; b/= m; c/= m;line.add(a + "," + b + "," + c);}}System.out.println(line.size());}//求最大公因数public static int gcd(int a, int b){return b == 0 ? a : gcd(b, a%b);}
}

【结果】

40257


试题 C: 货物摆放

本题总分:10 分

【问题描述】
小蓝有一个超大的仓库,可以摆放很多货物。现在,小蓝有 n 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。小蓝希望所有的货物最终摆成一个大的立方体。即在长、宽、高的方向上分别堆 L、W、H 的货物,满足 n = L × W × H。
给定 n,请问有多少种堆放货物的方案满足要求。
例如,当 n = 4 时,有以下 6 种方案:1×1×4、1×2×2、1×4×1、2×1×2、 2 × 2 × 1、4 × 1 × 1。
请问,当 n = 2021041820210418 (注意有 16 位数字)时,总共有多少种方案?
提示:建议使用计算机编程解决问题。

【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

【思路】
①由于n值过大,直接暴力破解会超时。
②因此考虑到缩小数据,由题意可知L、W、H可能取值都是n的因子,因此只要找到n的全部因子,然后再循环破解就可以了,找因子时开方也极大缩小了数据。

【Java代码】

import java.util.ArrayList;public class test {public static void main(String[] args) {long n = 2021041820210418l;//找出n的所有因子并保存ArrayList<Long> list = new ArrayList<>();for (long i = 1l; i < Math.sqrt(n)+1; i++) {if (n % i == 0){list.add(i);if (i * i != n){list.add(n/i);}}}//所有因子进行匹配int count = 0;for (int i = 0; i < list.size(); i++) {for (int j = 0; j < list.size(); j++) {for (int k = 0; k < list.size(); k++) {if (list.get(i)*list.get(j)*list.get(k) == n){count++;break;}}}}System.out.println(count);}
}

【结果】

2430


试题 D: 路径

【问题描述】
小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图 中的最短路径。
小蓝的图由 2021 个结点组成,依次编号 1 至 2021。
对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21,则两个结点 之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条 长度为 a 和 b 的最小公倍数的无向边相连。
例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无 向边,长度为 24;结点 15 和结点 25 之间有一条无向边,长度为 75。
请计算,结点 1 和结点 2021 之间的最短路径长度是多少。

【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

【思路】
带权最短路径,可以使用Floyd算法实现。(关于Floyd算法可以自行搜索)

【Java代码】

public class Floyd {//求a和b的最小公约数static int gcd(int a,int b){return b == 0 ? a : gcd(b,a%b);}//求a和b的最小公倍数static int lcm(int a,int b){return a * b / gcd(a,b);}public static void main(String[] args) {//初始化方阵int[][] floyd = new int[2021][2021];for (int i = 0; i < 2021; i++) {for (int j = i + 1; j < i + 22 && j < 2021; j++) {floyd[i][j] = floyd[j][i] = lcm(i+1, j+1);}}//Floyd算法for (int k = 0; k < floyd.length; k++) {for (int i = 0; i < floyd.length; i++) {for (int j = 0; j < floyd.length; j++) {if (floyd[i][k] != 0 && floyd[k][j] != 00 && (floyd[i][j] == 0 || floyd[i][j] > floyd[i][k] + floyd[k][j])) {floyd[i][j] = floyd[i][k] + floyd[k][j];}}}}//输出第一个点到第2021个点的距离System.out.println(floyd[0][2020]);}
}

【结果】

10266837


试题 E: 回路计数

本题总分:15 分

【问题描述】
蓝桥学院由 21 栋教学楼组成,教学楼编号 1 到 21。对于两栋教学楼 a 和 b,当 a 和 b 互质时,a 和 b 之间有一条走廊直接相连,两个方向皆可通行,否则没有直接连接的走廊。
小蓝现在在第一栋教学楼,他想要访问每栋教学楼正好一次,最终回到第一栋教学楼(即走一条哈密尔顿回路),请问他有多少种不同的访问方案?两个访问方案不同是指存在某个 i,小蓝在两个访问方法中访问完教学楼 i 后访问了不同的教学楼。
提示:建议使用计算机编程解决问题。

【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

【思路】
深度优先搜索+Map剪枝

【Java代码】

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;public class DPMAP {//求a和b的最小公约数static int gcd(int a,int b){return b == 0 ? a : gcd(b,a%b);}static ArrayList<Integer>[] list = new ArrayList[22]; //邻接表存储每个教学楼及其可以到达的教学楼static Map<String, Long> set = new HashMap<String, Long>(); //存储状态及其路线条数public static void main(String[] args) {//初始化邻接表for (int i = 1; i < list.length; i++)list[i] = new ArrayList<Integer>();for (int i = 1; i < 22; i++)for (int j = i + 1; j < 22; j++)if (gcd(i, j) == 1) {list[i].add(j);list[j].add(i);}System.out.println(dfs(21, 1, 0));}//深度优先搜索public static long dfs(int total, int begin, int state) {if (total == 0) return 1; //返回第一栋教学楼了long res = 0;for (int p : list[begin]) {if ((state & (1 << p)) != (1 << p)) {long r = 0;if (set.containsKey(p + "-" + state)) { //剪枝r = set.get(p + "-" + state);} else {if (p != 1 || p == 1 && total == 1) {r = dfs(total-1, p, state | (1 << p));}set.put(p + "-" + state, r);}res += r;}}return res;}
}

【结果】

881012367360

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

循环自相关函数和谱相关密度(三)——实信号、复信号模型下的BPSK信号循环谱MATLAB仿真结果及代码

关注公号【逆向通信猿】,循环谱 说明:接上一节循环自相关函数和谱相关密度(二)——实信号、复信号模型下的BPSK信号循环谱推导 7.5 仿真结果 7.5.1 实BPSK信号 符号速率RB = 40,采样率Fs = 960,载波频率fc = 300,符号数N = 1000,矩形成形。

executor线程池框架_如何使用Java 5 Executor框架创建线程池

executor线程池框架Java 5以Executor框架的形式在Java中引入了线程池&#xff0c;它允许Java程序员将任务提交与任务执行分离。 如果要使用Java进行服务器端编程&#xff0c;则线程池是维护系统可伸缩性&#xff0c;鲁棒性和稳定性的重要概念。 对于那些不熟悉Java中的线程池或…

第十二届蓝桥杯A组省赛试题 I: 双向排序(Java)

试题 I: 双向排序 本题总分&#xff1a;25 分 【问题描述】 给定序列 (a1, a2, , an) (1, 2, , n)&#xff0c;即 ai i。 小蓝将对这个序列进行 m 次操作&#xff0c;每次可能是将 a1, a2, , aqi 降序排列&#xff0c; 或者将 aqi , aqi1, , an 升序排列。 请求…

循环自相关函数和谱相关密度(四)——实信号、复信号模型下的QPSK信号循环谱推导

关注公号【逆向通信猿】,口令:循环谱 说明:接上一节循环自相关函数和谱相关密度(三)——实信号、复信号模型下的BPSK信号循环谱MATLAB仿真结果及代码 8 QPSK信号谱相关密度函数 8.1 实信号模型 QPSK实信号表达式可以写为 r ( t ) = y I ( t ) − y Q (

JavaFX技巧29:使布局忽略不可见的节点

在我仍在Swing中实现UI的时候&#xff0c;我曾经是MigLayout的忠实拥护者&#xff08;“一个布局管理者来统治所有这些&#xff0c;对吗Mikael&#xff1f;”&#xff09;。 我真正喜欢的功能之一是当组件不可见时可以定义不同的行为。 MigLayout允许我保留现在不可见的组件所占…

第十一届蓝桥杯A组省赛填空试题 A: 门牌制作(Java)

试题 A: 门牌制作 本题总分&#xff1a;5 分 【问题描述】 小蓝要为一条街的住户制作门牌号。 这条街一共有 2020 位住户&#xff0c;门牌号从 1 到 2020 编号。 小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符&#xff0c;最后根据需要将字符粘贴到门牌上&#xff0c;例如…

循环自相关函数和谱相关密度(五)——实信号、复信号模型下的QPSK信号循环谱MATLAB仿真结果及代码

关注公号【逆向通信猿】口令:循环谱 说明:接上一节循环自相关函数和谱相关密度(四)——实信号、复信号模型下的QPSK信号循环谱推导 8.4 仿真结果 8.4.1 实QPSK信号 符号速率RB = 40,采样率Fs = 960,载波频率fc = 300,符号数N = 1000,矩形成形,二倍载波频率为符号速…

第十一届蓝桥杯A组省赛填空试题 B: 既约分数(Java)

试题 B: 既约分数 本题总分&#xff1a;5 分 【问题描述】 如果一个分数的分子和分母的最大公约数是 1&#xff0c;这个分数称为既约分数。 例如&#xff0c;3/4&#xff0c;5/2&#xff0c;1/8&#xff0c;7/1都是既约分数。 请问&#xff0c;有多少个既约分数&#xff0c;分…

C++判断是否为素数、求一个数的因数、质因数分解

判断一个数是否为素数 #include<iostream> #include<vector> #include<math.h> #include<algorithm>/*判断是否为素数*/ bool isprime(int n) {bool result;int k (int)sqrt((double)n); // 只需要循环到 √n 即可int i 0;for (i 2; i < k; i){…

新的JDK 11文件方法isSameContent()

已经建议通过JDK-8202285将名为isSameContents()方法添加到JDK 11中的Files类中[[&#xff08;fs&#xff09;向文件中添加用于比较文件内容的方法”]。 由Joe Wang提议 &#xff0c;此新方法“打算是现有isSameFile方法的扩展&#xff0c;因为它没有比较内容以回答两个文件是否…

第十一届蓝桥杯A组省赛填空试题 C: 蛇形填数(Java)

试题 C: 蛇形填数 本题总分&#xff1a;10 分 【问题描述】 如下图所示&#xff0c;小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。 容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 20 行第 20 列 的数是多少&#xff1f; 【答案提交】 这是一道结果填空的题&…

Collatz函数的C++递归实现

Collatz函数为(正)自然数定义如下&#xff1a;collatz(N)&#xff1a;如果n是偶数&#xff0c;则返回n/2&#xff0c;否则返回(n∗3)1 #include <iostream> int Collatz(int n) {if (n % 2 0)n / 2;elsen 3 * n 1;return n; }int main(int argc, char* argv[]) {if (…

AI+药物研发:人工智能赋能新药研发(人工智能应用案例)

首先&#xff0c;生物制药行业面临着两个挑战&#xff1a; 第一&#xff0c;新药研发周期很长且非常复杂&#xff1b; 第二&#xff0c;药物研发过程成本昂贵。在1950年的时候&#xff0c;十亿美元可以研发几十个药&#xff0c;到了2020年之后&#xff0c;十亿美元只能研发一个…

具有CDI和lambda的策略模式

策略设计模式在运行时动态选择一种实现算法&#xff0c;一种策略。 该模式可用于根据情况选择不同的业务算法。 我们可以将不同的算法实现定义为单独的类。 或者&#xff0c;我们利用Java SE 8 lambda和函数&#xff0c;它们在此处充当轻量级策略实现。 CDI能够注入参数化类型…

计算圆周率π的C++实现(任意精度)

π\piπ的计算公式 代码 #include <iostream> #include <corecrt_math_defines.h> #include <iomanip>double compute_pi(int N) //计算pi函数 {double dx 1.0 / N;double pi 0;for (int i 1; i < N; i){pi 2 * sqrt(1 - i * dx*i*dx); // 积分函数}…

第十一届蓝桥杯A组省赛填空试题 D: 七段码(Java)

试题 D: 七段码 本题总分&#xff1a;10 分 【问题描述】 小蓝要用七段码数码管来表示一种特殊的文字。 上图给出了七段码数码管的一个图示&#xff0c;数码管中一共有 7 段可以发光的二极管&#xff0c;分别标记为 a, b, c, d, e, f, g。 小蓝要选择一部分二极管&#xff0…

【弗雷泽岛发射站所需的最小发射功率计算】通信调制体制设计之64QAM性能分析MATLAB仿真及代码

关注公号【逆向通信猿】更精彩!!! 任务背景 弗雷泽岛旅游经理在审查您之前建立无线链路任务的解决方案时,正在研究使用无线链路传输实时安全视频源的可能性。由于来自岛周围的多个安全摄像机的视频信号在传输之前被多路复用,因此无线信道的数据速率是不同的。弗雷泽岛旅…

第十一届蓝桥杯A组省赛试题 F: 成绩分析(Java)

试题 F: 成绩分析 时间限制: 1.0s 内存限制: 512.0MB 本题总分&#xff1a;15 分 【问题描述】 小蓝给学生们组织了一场考试&#xff0c;卷面总分为 100 分&#xff0c;每个学生的得分都是 一个 0 到 100 的整数。 请计算这次考试的最高分、最低分和平均分。 【输入格式】 输…

基于代价函数小波脊相位的MFSK信号符号速率估计MATLAB仿真及代码(2020.12.14更新)

算法来源 王勇, 王李福, 邹辉,等. 一种小波脊相位提取方法: 中国专利. 仿真结果 引言 当前,脊点的选取较准确也较经典的方法是Liu等提出的里程碑式的基于代价函数的小波脊相位提取方法(即代价函数脊法),其利用代价函数来抑制噪声的影响,并结合动态规划的思想进行脊线的…

AI+社区智能管理,赋能智慧城市人情共「智」(人工智能应用案例)

社区是城市的关键组成部分&#xff0c;社区治理是围绕社区场景下的人、地、物、情、事的管理与服务。 随着城市化的快速推进及人口流动的快速增加&#xff0c;传统社区治理在人员出入管控、安防巡逻、车辆停放管理等典型场景下都面临着人力不足、效率低下、响应不及时等诸多难…