第十三屆藍橋杯大賽軟體賽省賽【Java 大學B 組】試題D: 最少刷題數
阿新 • • 發佈:2022-04-09
1 import java.util.ArrayList;
2 import java.util.Scanner;
3
4 public class Main {
5 public static void main(String args[]) {
6 // System.out.println("請輸入一個正整數N");
7 Scanner sc = new Scanner(System.in); //初始化Scanner物件
8 int numN=sc.nextInt(); //輸入
9 ArrayList myNum= new ArrayList();
10 ArrayList res= new ArrayList();
11 // System.out.printf("依次輸入%d個整數\n",numN);
12 for (int i = 0;i<numN ;i++ ) {
13 int tempNum=sc.nextInt();
14 myNum.add(tempNum);
15 res.add(tempNum); //儲存排序之前的資料
16 }
17 // System.out.println("排序之前的資料:"+myNum.toString()+res.toString());
18 if(numN%2==0) {
19 // System.out.println("偶數");
20 //從小到大排序:
21 int tempNum=0;
22 for(int i=0;i<numN;i++) {
23 for (int j=i+1;j<numN;j++) {
24 int i_num=(int) myNum.get(i);
25 int j_num=(int ) myNum.get(j);
26 if(i_num>j_num) {
27 tempNum=i_num;
28 myNum.set(i, j_num);
29 myNum.set(j, tempNum);
30 }
31 }
32 }
33 // System.out.println("排序之後的資料:"+myNum.toString()+res.toString());
34 // System.out.println(myNum.toString());
35 //開始計算 結果儲存在res陣列中 下面是偶數情況:
36 for (int i=0;i<numN ; i++)
37 {
38 int zwNum=(int) myNum.get(numN/2);
39 int resTempNum=(int) res.get(i); //儲存當前資料
40 if((resTempNum==zwNum) || (resTempNum>zwNum)) {
41 res.set(i, 0);
42 }else {
43 res.set(i, zwNum-resTempNum+1);
44 }
45 }
46 }else {
47 //----------------------------------------------------------------------
48 // System.out.println("奇數");
49 //從小到大排序:
50 int tempNum=0;
51 for(int i=0;i<numN;i++) {
52 for (int j=i+1;j<numN;j++) {
53 int i_num=(int) myNum.get(i);
54 int j_num=(int) myNum.get(j);
55 if(i_num>j_num) {
56 tempNum=i_num;
57 myNum.set(i, j_num);
58 myNum.set(j, tempNum);
59 }
60 }
61 }
62 // System.out.println("排序之後的資料:"+myNum.toString()+res.toString());
63 //開始計算 結果儲存在res陣列中 下面是奇數情況:
64 for (int i=0;i<numN ; i++)
65 {
66 int zwNum=(int) myNum.get(numN/2);
67 int resTempNum=(int) res.get(i); //儲存當前資料
68 if((resTempNum==zwNum) || (resTempNum>zwNum)) {
69 res.set(i, 0);
70 }else {
71 res.set(i, zwNum-resTempNum+1);
72 }
73 }
74 }
75 //輸出結果
76 System.out.println(res.toString());
77 }
78 }