您的位置:首页 > 其它

明明的随机数(2006年NOIP全国联赛普及组)

2017-09-06 21:45 447 查看
标题: 明明的随机数

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

输入格式:

输入有2行

第1行为1个正整数,表示所生成的随机数的个数:N

第2行有N个用空格隔开的正整数,为所产生的随机数。

输出格式:

输出也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

提示: NOIP普及组2006

限制: 每个测试点1秒

样例:

输入

10

20 40 321 67 40 20 89 301 407 15

输出

8

15 20 40 67 89 301 321 407

输入

20

20 40 321 677 40 20 89 301 407 515 40 321 67 40 20 89 301 407 15 499

输出

11

15 20 40 67 89 301 321 407 499 515 677

思路:数据少,可以采用统计法,或者用简单的水桶法。

#include<stdio.h>
#include<string.h>
int main()
{
bool  a[1000];
memset(a,false,1000);
int n,d=0,i,temp;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&temp);
if(!a[temp-1]){
a[temp-1]=true;
d++;
}
}
printf("%d\n",d);
for(i=0;i<1000;++i){
if(a[i]){
printf("%d ",i+1);
}
}
return 0;
}


我想留下一个问题:

bool类型有没有必要初始化及初始化的其他方法?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: