解釋

求一比數字A他的與其他的數字差皆為最小。

輸入

輸入第一行是有幾筆數字(n)要處理。 後續輸入各個數字(n)。 直到End of File

輸出

每筆case:

  • 第一筆:為A(最小值)
  • 第二筆:輸入有多少筆資料為A
  • 第三筆:有多少不同的A(包含不在輸入值的數值)

解法:

  1. 將輸入用陣列存入,並且sort
  2. 第一筆:求中位數,本次資料有n筆,那的資料為(偶數情況)、的資料為(偶數情況) 若是奇數,則是(注意,電腦陣列由0開始)
  3. 第二筆:輸入有多少筆為就是用迴圈,去check迴圈數值跟 重複幾筆
  4. 第三筆:有多少個==整數==可以滿足A(不限於輸入),這部分很簡單,即可

程式碼

import java.util.Arrays;  
import java.util.Scanner;  
  
public class main {  
    public static void main(String[] args) {  
        Scanner sc = new Scanner(System.in);  
  
        while(sc.hasNext()){  
            int num = sc.nextInt();  
            int[] arr = new int[num];  
            for(int i = 0 ; i < num ; i++){  
                arr[i] = sc.nextInt();  
            }  
            Arrays.sort(arr);  
            int m1=arr[num/2-1];  
            int m2=arr[num/2];  
            if(num % 2 != 0){  
                m1 = m2;  
            }  
            int satisfy = m2-m1+1;  
            int count = 0;  
            for (int j : arr) {  
                if (j == m1 || j == m2) {  
                    count++;  
                }  
            }  
  
            System.out.printf("%d %d %d\r\n",m1, count, satisfy);  
  
        }  
    }  
  
  
}

註:此程式在ZeroJudge測資失敗,但在瘋狂程設可成功提交。