[2006年NOIP普及组] 明明的随机数

题目大意:在N个1到1000之间的随机整数中,对于其中重复的数字,只保留一个,把其余相同的数去掉,再把这些数从小到大排序。

这个题目我们其实可以开一个数组,如果一个数字出现了,就让对应的数组的位置标记下来,最后输出。

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int a,n,tot;//tot表示不重复的数字数
bool num[1001];//num[i]代表值为i的数是否出现过
int main()
{
memset(num,false,sizeof(num));
cin>>n;
for (int i=1;i<=n;i++)
{
cin>>a;
if (num[a]==false)//加上这个判断,是为了避开重复,在输入循环中直接计算tot的值,节省时间
{
num[a]=true;
tot++;
}
}
cout<<tot<<endl;
for (int i=1;i<=1000;i++)//循环整个num数组,如果num[i]=true,说明有i这个数,输出
{
if (num[i]==true)
{
cout<<i<<" ";
}
}
}