意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

noip2006 明明的随机数 (模拟)

来源:恒创科技 编辑:恒创科技编辑部
2024-02-04 09:58:59


A1155. 明明的随机数



noip2006 明明的随机数 (模拟)

1.0s 内存限制: 256.0MB



​​719​​ AC次数: 387 平均分: 58.54


将本题分享到:





​​查看未格式化的试题​​​ ​​​提交​​​ ​​​试题讨论​​


试题来源



  NOIP2006 普及组


问题描述



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



输入格式



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



输出格式



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



样例输入



10
20 40 32 67 40 20 89 300 400 15



样例输出



8
15 20 32 40 67 89 300 400



数据规模和约定



代码:


#include<cstdio>
#include<algorithm>
#define maxn 100
using namespace std;
int n,a[maxn+20];

int main()
{
int i,j,k;
scanf("%d",&n);
for(i=1;i<=n;i++)scanf("%d",&a[i]);
sort(a+1,a+n+1);

for(a[0]=1,i=2;i<=n;i++)
if(a[i]!=a[i-1])a[++a[0]]=a[i];
printf("%d\n",a[0]);
for(i=1;i<a[0];i++)printf("%d ",a[i]);
printf("%d\n",a[a[0]]);
return 0;
}





上一篇: CEOI 1999 Parity game (并查集+离散化) 下一篇: 手机怎么远程登录云服务器?