2006年分区联赛普级组之一 明明的…

本文介绍了一种用于处理学校问卷调查的算法,通过去除重复的随机整数并进行排序来选择不同学生参与调查。使用数组标记法实现高效去重与排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

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

Input

输入有2 行,第1 行为1 个正整数,表示所生成的随机数的个数:N 
第二行有N 个用空格隔开的正整数,为所产生的随机数。 

Output

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

Sample Input

 

10 
 20 40 32 67 40 20 89 300 400 15 

 

Sample Output

 


15 20 32 40 67 89 300 400 


解题思路:先把读入的数据在数组相应的地方标记,然后统计有多少个个不同的数,最后输出即可。


程序:
var
  n,x,i,s:longint;
  a:array[1..1000] of longint;
begin
  readln(n);
  for i:=1 to n do
  begin
    read(x);
    inc(a[x]);
  end;
  for i:=1 to 1000 do
    if a[i]<>0 then inc(s);
  writeln(s);
  for i:=1 to 1000 do
    if a[i]<>0 then write(i,' ');
end.


版权属于: Chris
原文地址: http://blog.sina.com.cn/s/blog_83ac6af80102v0i4.html
转载时必须以链接形式注明原始出处及本声明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值