【模拟】明明的随机数
来源:互联网 发布:csgo数据转换器 编辑:程序博客网 时间:2024/04/30 04:39
题目:明明的随机数 rqnoj1
题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入格式
输入有2行,第1行为1个正整数,表示所生成的随机数的个数:
N
第2行有N个用空格隔开的正整数,为所产生的随机数。
输出格式
输出也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
样例输入
样例输出
这道题应该是很简单了,一次快排,然后判断去重即可,代码就只有Pascal的了
可能代码有点冗长。。。不过思路还是清楚
program rqnoj;var n:longint; a:array[0..200] of longint;procedure init;begin assign(input,'rqnoj1.in'); assign(output,'rqnoj1.out'); reset(input); rewrite(output);end;procedure outit;begin close(input); close(output); halt;end;procedure readdata;var i:longint;begin read(n); for i:=1 to n do read(a[i]);end;procedure exchange(var a,b:longint);var t:longint;begin t:=a;a:=b;b:=t;end;procedure qsort(l,r:longint);var i,j,x:longint;begin i:=l;j:=r;x:=a[(i+j)shr 1]; repeat while a[i]<x do inc(i); while a[j]>x do dec(j); if i<=j then begin exchange(a[i],a[j]); inc(i); dec(j); end; until i>j; if i<r then qsort(i,r); if j>l then qsort(l,j);end;procedure main;var i,t:longint;begin qsort(1,n); t:=n; for i:=2 to t do begin if a[i]=a[i-1] then dec(t); end; writeln(t); for i:=1 to n-1 do begin if a[i]<>a[i+1] then write(a[i],' '); end; if a[n]<>a[n-1] then writeln(a[n]);end;begin init; readdata; main; outit;end.
- 【模拟】明明的随机数
- 【模拟】明明的随机数
- noip2006 明明的随机数 (模拟)
- Vijos 1316-明明的随机数【模拟】
- water~~~明明的随机数
- 1341. 明明的随机数
- 1342 明明的随机数
- 明明的随机数
- 明明的随机数
- 明明的随机数
- 明明的随机数
- 明明的随机数
- 1002. 明明的随机数
- 明明的随机数
- 明明的随机数
- 明明的随机数
- 明明的随机数
- 明明的随机数
- java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
- SVN: 高级应用
- 电话来电显示
- ACM知识点
- POJ推荐50题
- 【模拟】明明的随机数
- 【模拟】计数的梦
- gprs开关
- 【模拟】陶陶摘苹果
- 【模拟】校门外的树
- 【模拟】谁拿了最多奖学金
- 【模拟】不高兴的津津
- 【模拟】津津的储蓄计划
- Android 下检测CPU的能力