解釋
求一比數字A他的與其他的數字差皆為最小。
輸入
輸入第一行是有幾筆數字(n)要處理。 後續輸入各個數字(n)。 直到End of File
輸出
每筆case:
- 第一筆:為A(最小值)
- 第二筆:輸入有多少筆資料為A
- 第三筆:有多少不同的A(包含不在輸入值的數值)
解法:
- 將輸入用陣列存入,並且sort
- 第一筆:求中位數,本次資料有n筆,那的資料為(偶數情況)、的資料為(偶數情況) 若是奇數,則是(注意,電腦陣列由0開始)
- 第二筆:輸入有多少筆為就是用迴圈,去check迴圈數值跟 、 重複幾筆
- 第三筆:有多少個==整數==可以滿足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測資失敗,但在瘋狂程設可成功提交。