#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 的情况下,这个复杂度是完全可接受的。

结论

本题主要考察了去重和排序的基本操作,可以通过简单的 集合和排序函数快速解决。