1. 程式人生 > 其它 >第十三屆藍橋杯大賽軟體賽省賽【Java 大學B 組】試題D: 最少刷題數

第十三屆藍橋杯大賽軟體賽省賽【Java 大學B 組】試題D: 最少刷題數

 

 

 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 }