#1669. [NOIP2006普及组]明明的随机数
[NOIP2006普及组]明明的随机数
版权信息: NOIP 2006 普及组
任务总览
任务名称 | 时间限制 | 内存限制 | 分数 |
---|---|---|---|
去重与排序 | 1 sec | 125 MB | 暂无 |
题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N 个 1 到 1000 之间的随机整数(N ≤ 100)。对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入格式
输入文件 random.in
有 2 行:
- 第 1 行是一个正整数 N,表示所生成的随机数的个数。
- 第 2 行有 N 个用空格隔开的正整数,表示所产生的随机数。
输出格式
输出文件 random.out
也是 2 行:
- 第 1 行输出一个正整数 M,表示不相同的随机数的个数。
- 第 2 行输出 M 个用空格隔开的正整数,表示从小到大排好序的不相同的随机数。
样例输入和输出
输入示例 1:
10
20 40 32 67 40 20 89 300 400 15
输出示例 1:
8
15 20 32 40 67 89 300 400
提示
- 数据范围:1 ≤ N ≤ 100,且生成的随机数在 1 到 1000 之间。
- 去重后的数需要按升序排列输出。
题目分析
- 本题需要实现去重操作和排序操作。首先,去除重复数字可以使用集合(set),然后使用排序函数对这些不重复的数字进行升序排序。
- 最终输出的是去重后的数量和排序后的数字。
时间复杂度分析
- 去重操作的时间复杂度为 O(N),由于集合去重操作的平均时间复杂度是常数时间。
- 排序操作的时间复杂度为 O(M log M),其中 M 是去重后数字的数量,最多为 N。
- 总时间复杂度:O(N + M log M),在 N ≤ 100 的情况下,这个复杂度是完全可接受的。
结论
本题主要考察了去重和排序的基本操作,可以通过简单的 集合和排序函数快速解决。