sdnu1174.明明的随机数

来源:互联网 发布:服务器linux中查询ip 编辑:程序博客网 时间:2024/06/09 16:57

1174.明明的随机数
Time Limit: 1000 MS Memory Limit: 32768 KB
Total Submission(s): 201 Accepted Submission(s): 76
Description
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
Input
输入有2行,第1行为1个正整数,表示所生成的随机数的个数N。
第2行有N个用空格隔开的正整数,为所产生的随机数。
Output
输出也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
Sample Input
10
20 40 32 67 40 20 89 300 400 15
Sample Output
8
15 20 32 40 67 89 300 400
Source
NOIP 2006 普及组

渣渣的low级做法。。。

#include<cstdio>#include<algorithm>#include<iostream>#include<cmath>#include<iomanip>#include<cstring>using namespace std;int main(){    int n,i,j[101],t[102];    cin >> n;    for(i=0; i<n; i++) cin >> j[i];    sort(j,j+n);    for(i=0; i<=n-1; i++){        if (j[i]!=j[i+1]){            t[0]++;            t[t[0]]=j[i];        }    }    cout << t[0] << endl;    for(i=1; i<t[0]; i++) cout << t[i] << " ";    cout << t[t[0]] << endl;    return 0;}

set做法
set容器的特性:插入元素不可重复、默认是从小到大的顺序

#include <set>#include <iostream>#include <cstring>#include <cstdio>#include<iterator>using namespace std;set<int >q;set<int>::iterator t;int main(){    int n,x;    scanf("%d",&n);    for(int i=1;i<=n;i++)    scanf("%d",&x) ,q.insert(x);    printf("%d\n",q.size());    t=q.begin();    for(;t!=q.end();t++){        printf("%d ",*t);    }    return 0;}