欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

2022年蓝桥杯省赛题目JAVAC组

时间:2023-07-31

#A ASC

本题总分:5 分

问题描述

  已知大写字母 A  的 A S C I I码为 65 ,请问大写字母 L 的 A S C I I 码是多少?

答案提交

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

76

//#A ASCpublic static void main(String[] args) {// 已知大写字母 A 的 ASCII 码为 65 // 请问大写字母 L 的 ASCII 码是多少?//因为ASCII码没有改变可以直接输出其ASCII码值。System.out.println('L'+0);}

#B 空间

本题总分:5 分

问题描述

  小蓝准备用 256 M B  的内存空间开一个数组,数组的每个元素都是 32 位二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问 256 M B  的空间可以存储多少个 32 位二进制整数?

答案提交

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

67108864

//#B 空间public static void main(String[] args) {// 1B=8b 1MB=2^10KB=2^20BSystem.out.println(64*1024*1024);}

#C 卡片

本题总分:10 分

问题描述

  小蓝有很多数字卡片,每张卡片上都是数字 0 到 9 。

  小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。

  小蓝想知道自己能从 1  拼到多少。

  例如,当小蓝有 30  张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10 ,但是拼 11 时卡片 1 已经只有一张了,不够拼出 11 。

  现在小蓝手里有 0 到 9  的卡片各 2021张,共 20210 张,请问小蓝可以从 1  拼到多少?

  提示:建议使用计算机编程解决问题。

答案提交

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

3181

//#C 卡片public static int arr[]=new int[10];public static void main(String[] args) {//0-9的数字各2021张for(int i=0;i<10;i++)arr[i]=2021;//循环看能拼到多少数字for(int i=1;i<5000;i++){//判断能否组成,组成则数字会减去一个if(!del(i)){System.out.println(i-1);break;}}}//进行判断是否能够组成数字public static boolean del(int x){while(x!=0){arr[x%10]--;if(arr[x%10]<0)return false;x/=10;}return true;}

#D 相乘

本题总分:10 分

问题描述

  小蓝发现,他将 1 至 1000000007 之间的不同的数与 2021 相乘后再求除以1000000007 的余数,会得到不同的数。

  小蓝想知道,能不能在 1 至 1000000007 之间找到一个数,与 2021 相乘后再除以1000000007后的余数为 999999999。如果存在,请在答案中提交这个数;

  如果不存在,请在答案中提交 0 。

答案提交

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

17812964

//#D 相乘public static void main(String[] args) {// a控制判断是否存在该数int a=1;//循环1-1000000007的数for(int i=1;i<=1000000007;i++) {//将每个数都与2021相乘int t=i*2021;//然后判断与1000000007相除之后的余数是否为999999999if((long)t%1000000007==999999999) {a=a+1;//若是则输出该数System.out.println(i);break;}}//若a没有变化则说明数不存在,若有变化则证明数存在if(a!=2) { System.out.println(0);}}

#E 路径

本题总分:15 分

问题描述

  小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图中的最短路径。

  小蓝的图由 2021 个结点组成,依次编号 1 至 2021 。对于两个不同的结点 a , b ,如果 a 和 b的差的绝对值大于 21 ,则两个结点之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21 ,则两个点之间有一条长度为 a 和 b 的最小公倍数的无向边相连。

  例如:结点 1  和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无向边,长度为 24 ;结点 15 和结点 25之间有一条无向边,长度为 75 。

  请计算,结点 1 和结点 2021 之间的最短路径长度是多少。

  提示:建议使用计算机编程解决问题。

答案提交

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

10266837

import java.util.PriorityQueue;import java.util.ArrayList;import java.util.Arrays;import java.util.Queue;import java.util.List;public class questionE {// #E 路径int N = 2021; void main() {// TODO Auto-generated method stubList[] graph = new List[N + 1]; long[] visited = new long[N + 1]; for (int i = 1; i <= N; i++) graph[i] = new ArrayList(); for (int v = 1; v < N; v++) for (int w = v + 1; w <= min(v + 21, N); w++) { graph[v].add(new Edge(w, lcm(v, w))); graph[w].add(new Edge(v, lcm(v, w))); } Queue queue = new PriorityQueue(); Arrays.fill(visited, Long.MAX_VALUE); queue.offer(new Vertex(1, 0)); Vertex V = null; while (queue.size() > 0) { V = queue.poll(); if (V.v == N) break; if (V.weight >= visited[V.v]) continue; visited[V.v] = V.weight; for (Edge edge : graph[V.v]) queue.offer(new Vertex(edge.w, edge.weight + V.weight)); } System.out.println(V.weight);} int min(int a, int b) { return a < b ? a : b; } int lcm(int a, int b) { return a * b / gcd(a, b); } int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } class Edge { int w, weight; Edge(int w, int weight) { this.weight = weight; this.w = w; } } class Vertex implements Comparable { int v; long weight; Vertex(int v, long weight) { this.weight = weight; this.v = v; } @Override public int compareTo(Vertex V) { return Long.compare(this.weight, V.weight); } }}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。