请用C++写这个代码。[NOIP2006 普及组] 明明的随机数 题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 � N 个 1 1 到 1000 1000 之间的随机整数 ( � ≤ 100 ) (N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。 输入格式 输入有两行,第 1 1 行为 1 1 个正整数,表示所生成的随机数的个数 � N。 第 2 2 行有 � N 个用空格隔开的正整数,为所产生的随机数。 输出格式 输出也是两行,第 1 1 行为 1 1 个正整数 � M,表示不相同的随机数的个数。 第 2 2 行为 � M 个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
时间: 2024-02-25 21:57:24 浏览: 59
以下是C++代码:
```
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
int a[n];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a, a + n); // 排序
int m = unique(a, a + n) - a; // 去重
cout << m << endl;
for (int i = 0; i < m; i++) {
cout << a[i] << " ";
}
cout << endl;
return 0;
}
```
首先读入随机数的个数n和n个随机数,然后使用sort函数对随机数进行从小到大的排序。接着使用unique函数对a数组进行去重操作,返回去重后的数组元素个数m。最后输出m和去重后的随机数数组a。
相关问题
p1059 [noip2006 普及组] 明明的随机数
题目描述:
明明想在学校里组织一些活动,他想让参加活动的同学排成一列,然后从这个序列中选出一些数,使得这些数之间没有重复的数。明明想知道,他最多能选出多少个数。
输入格式:
输入的第一行包含一个整数 n,表示序列的长度。
第二行包含 n 个整数,表示整个序列。
输出格式:
输出一个整数,表示最多能选出的数的个数。
输入样例:
5
2 2 1 3 1
输出样例:
3
解题思路:
本题需要用到set容器,set容器是一个内部自动有序且不重复的容器,可以用来存储不重复的元素。
首先将输入的序列存储到set容器中,因为set容器内部自动有序,所以可以直接遍历set容器,找到相邻两个数不相等的个数,即为最多能选出的数的个数。
C++代码:
阅读全文