第十二届蓝桥杯省赛JavaC组【第二场】真题——详细答案对照(完整版)
目錄
#A 浮點數
#B 求余
#C 雙階乘
#D 格點
#E 整數分解
#F 3 的倍數
#G 特殊年份
#H 小平方
#I 完全平方數
#J 負載均衡
#A 浮點數
本題總分:5 分
問題描述
IEEE 754 規(guī)定一個雙精度浮點數由 1位符號位、11 位階和 52 位尾數組成(以上位數都表示二進制位數)。
請問,按此規(guī)定一個雙精度浮點數占用幾個字節(jié)?
答案提交
這是一道結果填空的題,你只需要算出結果后提交即可。本題的結果為一個整數,在提交答案時只填寫
這個整數,填寫多余的內容將無法得分。
8
代碼實現
無
思路:
#B 求余
本題總分:5 分
問題描述
在 C/C++/Java/Python 等語言中,使用 % 表示求余,請問 2021%20 的值是多少?
答案提交
這是一道結果填空的題,你只需要算出結果后提交即可。本題的結果為一個整數,在提交答案時只填寫這個整數,填寫多余的內容將無法得分。
1#C 雙階乘
本題總分:10 分
問題描述
一個正整數的雙階乘,表示不超過這個正整數且與它有相同奇偶性的所有正整數乘積。n 的雙階乘用 n!!表示。
例如:
3 ! ! = 3 × 1 = 3。
8 ! ! = 8 × 6 × 4 × 2 = 384。
11 ! ! = 11 × 9 × 7 × 5 × 3 × 1 = 10395。
請問,2021!! 的最后 5 位(這里指十進制位)是多少?
注意:2021!!=2021×2019×???×5×3×1。
提示:建議使用計算機編程解決問題。
答案提交
這是一道結果填空的題,你只需要算出結果后提交即可。本題的結果為一個整數,在提交答案時只填寫這個整數,填寫多余的內容將無法得分。
59375
代碼實現
#D 格點
本題總分:10 分
問題描述
如果一個點 ( x , y ) 的兩維坐標都是整數,即 x ∈ Z 且 y ∈ Z ,則稱這個點為一個格點。
如果一個點 ( x , y ) 的兩維坐標都是正數,即 x > 0 ?且 y > 0 ?,則稱這個點在第一象限。
請問在第一象限的格點中,有多少個點 ( x , y ) 的兩維坐標乘積不超過 2021 ,即 x ? y ≤ 2021。
提示:建議使用計算機編程解決問題。
答案提交
這是一道結果填空的題,你只需要算出結果后提交即可。本題的結果為一個整數,在提交答案時只填寫這個整數,填寫多余的內容將無法得分。
15696
代碼實現
#E 整數分解
本題總分:15 分
問題描述
將 3 分解成兩個正整數的和,有兩種分解方法,分別是 3 = 1 + 2 和 3 = 2 + 1 。注意順序不同算不同的方法。
將 5 分解成三個正整數的和,有 6 種分解方法,它們是 1 + 1 + 3 = 1 + 2 + 2 = 1 + 3 + 1 = 2 + 1 + 2 = 2 + 2 + 1 = 3 + 1 + 1。
請問,將 2021 分解成五個正整數的和,有多少種分解方法?
答案提交
這是一道結果填空的題,你只需要算出結果后提交即可。本題的結果為一個整數,在提交答案時只填寫這個整數,填寫多余的內容將無法得分。
public static void main(String[] args) {long[][] dp = new long[6][2022];java.util.Arrays.fill(dp[1], 1);for (int k = 2; k <= 5; k++)for (int i = k; i <= 2021; i++)dp[k][i] = dp[k][i - 1] + dp[k - 1][i - 1];System.out.println(dp[5][2021]);}#F 3 的倍數
時間限制: 1.0s 內存限制: 512.0MB 本題總分: 15 分
問題描述
小藍對 3 33 的倍數很感興趣。現在他手頭有三個不同的數 a , b , c ,他想知道,這三個數中是不是有兩個數的和是 3 的倍數。
例如,當 a = 3 , b = 4 , c = 6 時,可以找到 a aa 和 c cc 的和是 3 的倍數。
例如,當 a = 3 , b = 4 , c = 7 時,沒辦法找到兩個數的和是 3 的倍數。
輸入格式
輸入三行,每行一個整數,分別表示 a , b , c a, b, ca,b,c。
輸出格式
如果可以找到兩個數的和是 3 33 的倍數,輸出 y e s yesyes,否則輸出 n o nono。
測試樣例1
Input:
3
4
6
Output:
yes
測試樣例2
Input:
3
4
7
Output:
no
評測用例規(guī)模與約定
對于所有評測用例,1 ≤ a ≤ b ≤ c ≤ 100 。
代碼實現
?
#G 特殊年份
時間限制: 1.0s 內存限制: 512.0MB 本題總分:20 分
問題描述
今年是 2021 年,2021 這個數字非常特殊,它的千位和十位相等,個位比百位大 1 ,我們稱滿足這樣條件的年份為特殊年份。
輸入 5 個年份,請計算這里面有多少個特殊年份。
輸入格式
輸入 5 ?行,每行一個 4 位十進制數(數值范圍為 1000 至 9999 ),表示一個年份。
輸出格式
輸出一個整數,表示輸入的 5 個年份中有多少個特殊年份。
測試樣例1
Input:
2019
2021
1920
2120
9899
Output:
2
Explanation:
2021 和 9899 是特殊年份,其它不是特殊年份。
代碼實現
static int sum=0; public static void main(String[] args) {Scanner sc=new Scanner(System.in);for (int i = 0; i < 5; i++) {f(sc.nextInt());}System.out.println(sum);} public static void f(int x) {if(x%10==x/100%10+1&&x/1000==x/10%10) {sum++;} }#H 小平方
時間限制: 1.0s 內存限制: 512.0MB 本題總分:20 分
問題描述
小藍發(fā)現,對于一個正整數 n 和一個小于 n 的正整數 v,將 v 平方后對 n 取余可能小于 n 的一半,也可能大于等于 n 的一半。
請問,在 1 到 n ? 1 中,有多少個數平方后除以 n 的余數小于 n 的一半。
例如,當 n = 4 時,1 , 2 , 3 的平方除以 4 的余數都小于 4 的一半。
又如,當 n = 5 時,1 , 4 的平方除以 5 的余數都是 1 ,小于 5 的一半。而 2 , 3 的平方除以 5 的余數都是 4 ,大于等于 5 的一半。
輸入格式
輸入一行包含一個整數 n 。
輸出格式
輸出一個整數,表示滿足條件的數的數量。
測試樣例1
Input:
5
Output:
2
評測用例規(guī)模與約定
對于所有評測用例,1 ≤ n ≤ 10000 。
代碼實現
#I 完全平方數
時間限制: 2.0s 內存限制: 512.0MB 本題總分:25 分
問題描述
一個整數 a 是一個完全平方數,是指它是某一個整數的平方,即存在一個整數 b ,使得 a = b^2 。
給定一個正整數 n ,請找到最小的正整數 x ,使得它們的乘積是一個完全平方數。
輸入格式
輸入一行包含一個正整數 n 。
輸出格式
輸出找到的最小的正整數 x 。
測試樣例1
Input:
12
Output:
3
測試樣例2
Input:
15
Output:
15
評測用例規(guī)模與約定
對于 30% 的評測用例,1 ≤ n ≤ 1000 ,答案不超過 1000 10001000。
對于 60% 的評測用例,1 ≤ n ≤ 10^8 ,答案不超過 10^8。
對于所有評測用例,1 ≤ n ≤ 1 0^12 ,答案不超過 10^12。
代碼實現
?
#J 負載均衡
時間限制: 2.0s 內存限制: 512.0MB 本題總分: 25 分
問題描述
有 n 臺計算機,第i臺計算機的運算能力為 ?。
有一系列的任務被指派到各個計算機上,第 i 個任務在 ?時刻分配,指定計算機編號為 ,耗時為 且算力消耗為 。如果此任務成功分配,將立刻開始運行,期間持續(xù)占用 ? 號計算機 ? 的算力,持續(xù) 秒。對于每次任務分配,如果計算機剩余的運算能力不足則輸出 ?1,并取消這次分配,否則輸出分配完這個任務后這臺計算機的剩余運算能力。
輸入格式
輸入的第一行包含兩個整數 n,m,分別表示計算機數目和要分配的任務數。
第二行包含 n 個整數 ,,···,分別表示每個計算機的運算能力。
接下來 m 行每行 4 個整數 意義如上所述。數據保證 ?嚴格遞增,即 。
輸出格式
輸出 m 行,每行包含一個數,對應每次任務分配的結果。
測試數據
?沒有完全解出來,但是已經能過幾個數據了,多少有一些提示作用。
代碼實現 (有個bug沒修,但是給的測試用例沒問題) //存儲任務的總信息static Map<Integer, List<Integer>> map=new HashMap<>();//存儲每個任務的時間static List<Integer> times=new ArrayList<>();//存儲每個任務所消耗的空間static List<Integer> kj=new ArrayList<>();public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();//電腦的數量int m=sc.nextInt();//任務數for (int i =1 ; i < n+1; i++) {map.putIfAbsent(i, new ArrayList<>());map.get(i).add(sc.nextInt());}for (int i = 1; i < m+1; i++) {int a=sc.nextInt();//讀取任務編號int b=sc.nextInt();//讀取電腦編號int c=sc.nextInt();//讀取時間消耗int d=sc.nextInt();//讀取空間消耗//時間消耗隨著任務的增長而減小for (Integer item:map.keySet()) {if(map.get(item).size()==5) {for (int j = 0; j < times.size(); j++) {int y=times.get(j)-1;if(y==0) {int x=map.get(item).get(0);map.get(item).set(0,x+kj.remove(j));times.remove(j);}else {times.set(j, y);} }}}//初始化電腦的任務if(map.get(b).get(0)>d&&map.get(b).size()<5) {map.get(b).add(a);map.get(b).add(b);map.get(b).add(c);map.get(b).add(d); // times.add(c); // kj.add(d);}//判斷任務的消耗是否超出電腦本身的消耗if(map.get(b).get(0)-d<0) {System.out.println(-1);continue;}else {//未超出電腦消耗的話則為任務分配空間int x=map.get(b).get(0)-d;times.add(c);kj.add(d);System.out.println(x);map.get(b).set(0,x);}}}照搬網上的,話說按照網上的這個方法,我是很懵逼的。
import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; import java.util.PriorityQueue; import java.util.Queue;public class Main {public static void main(String[] args) {InputReader in = new InputReader(System.in);PrintWriter out = new PrintWriter(System.out);Queue<Item> queue = new PriorityQueue();int n = in.nextInt(), m = in.nextInt();int[] comp = new int[n + 1];int a, b, c, d, time = 1;for (int i = 1; i <= n; i++)comp[i] = in.nextInt();for (int i = 0; i < m; i++) {a = in.nextInt();b = in.nextInt();c = in.nextInt();d = in.nextInt();if (a > time) time = a;while (queue.size() > 0) {Item item = queue.peek();if (item.time > time) break;comp[item.idx] += item.val;queue.remove();}if (comp[b] >= d) {queue.add(new Item(b, d, time + c));out.println(comp[b] -= d);} else out.println("-1");}out.flush();}static class Item implements Comparable<Item> {int time, idx, val;Item(int idx, int val, int time) {this.time = time;this.idx = idx;this.val = val;}@Overridepublic int compareTo(Item o) {return this.time - o.time;}}static class InputReader {BufferedReader read;StringTokenizer token;String delimiters;InputReader (InputStream in) { this(in, " \t\n\r\f"); }InputReader (InputStream in, String delimiters) {this.read = new BufferedReader(new InputStreamReader(in));this.token = new StringTokenizer("", this.delimiters = delimiters);}String next() {while (!token.hasMoreTokens())try {token = new StringTokenizer(read.readLine(), delimiters);} catch (IOException e) {e.printStackTrace();}return token.nextToken();}int nextInt() { return Integer.parseInt(next()); }} }總結
以上是生活随笔為你收集整理的第十二届蓝桥杯省赛JavaC组【第二场】真题——详细答案对照(完整版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VMware Workstation 与
- 下一篇: 第六届蓝桥杯决赛JavaC组真题——详细