1899 - 筛排处理

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N<=100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作

题目输入

每组输入数据的第一行含有一个正整数N,表示后面行中有N个随机整数。若N=0,表示处理结束。

题目输出

对应每组输入数据,输出一组数据,该数据由单独一行开头,内含一个N,表示后面有N个排好序的整数,整数之间空一格。每组输出数据之间空一行。

输入/输出样例

题目输入

12
2 4 6 17 20 40 43 45 60 64 85 98
17
35 75 40 61 56 21 85 61 50 83 52 22 44 68 51 80 38
0

题目输出

12
2 4 6 17 20 40 43 45 60 64 85 98

16
21 22 35 38 40 44 50 51 52 56 61 68 75 80 83 85

C++解答

#include <bits/stdc++.h>
using namespace std;

int main() {
	int n, x;
	set <int> s;
	set <int> :: iterator it;
	
	while (cin >> n) {
		if (n == 0) break;
		
		s.clear();
		while (n --) {
			cin >> x;
			s.insert(x);
		}
		
		cout << s.size() << endl;
		for (it = s.begin(); it != s.end(); it ++) cout << *it << ' ';
		cout << endl << endl;
	}

	return 0;
}

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题