Mr.J--藍橋杯--明明的隨機數
阿新 • • 發佈:2018-11-17
問題描述
明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了N個1到1000之間的隨機整數(N≤100),對於其中重複的數字,只保留一個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成“去重”與“排序”的工作。
輸入格式
輸入有2行,第1行為1個正整數,表示所生成的隨機數的個數:
N
第2行有N個用空格隔開的正整數,為所產生的隨機數。
輸出格式
輸出也是2行,第1行為1個正整數M,表示不相同的隨機數的個數。第2行為M個用空格隔開的正整數,為從小到大排好序的不相同的隨機數。
樣例輸入
10
20 40 32 67 40 20 89 300 400 15
樣例輸出
8
15 20 32 40 67 89 300 400
AC程式碼:
import java.io.*; import java.util.*; /* acm.xatu.edu 明明的隨機數 * 明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機 * 生成了N個1到1000之間的隨機整數(N≤100),對於其中重複的 * 數字,只保留一個,把其餘相同的數去掉,不同的數對應著不 * 同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做 * 調查。請你協助明明完成“去重”與“排序”的工作。*/ public class Main { public static void main(String args[]) throws Exception{ //讀入字串 //Reader InputStream //FileReader FileInputStream FileReader r = new FileReader("E:\\java\\random.in"); BufferedReader br = new BufferedReader(r); String n = br.readLine(); String ns = br.readLine(); //10個字串 //把字串分成各個數字的字串 String[] strs = ns.split(" "); //用空格進行切割 //把字串中的數字字元轉換成數字,並放入線性表中 //List 有重複,有序 Set 無重複,無序 //ArrayList<Integer> nums = new ArrayList<Integer>(); //陣列集合 HashSet<Integer> nums = new HashSet<Integer>(); for(String str: strs) { int num = Integer.parseInt(str); //除去重複數字 nums.add(num); } //除錯 System.out.println(nums); //排序 ArrayList<Integer> list = new ArrayList<Integer>(nums); Collections.sort(list); //除錯 System.out.println(list); //寫入random.out PrintWriter p = new PrintWriter("E:\\java\\random.out"); p.println(list.size()); //輸出list的個數 for(int t : list) { //int i = list.size()-1;i>=0;i-- //p.print(list.get(i)+ " "); // 這兩行為降序輸出 p.print(t + " "); } p.flush(); } }