洛谷P1059 [NOIP2006 普及组] 明明的随机数

题目链接:
[ 普及组] 明明的随机数
洛谷P1059 [ 普及组] 明明的随机数 目录
洛谷P1059 [ 普及组] 明明的随机数
1.题目
> 题目描述
> 输入格式
> 输出格式
> 输入输出样例
输入 #1
输出 #1
> 说明/提示
2.思路 & 题解
童鞋们一定要输入 0啊啊啊!
1.题目 > 题目描述
明明想在学校中请一些同学一起做一项问卷调查 , 为了实验的客观性 , 他先用计算机生成了


之间的随机整数(
≤ 100) , 对于其中重复的数字 , 只保留一个 , 把其余相同的数去掉 , 不同的数对应着不同的学生的学号 。然后再把这些数从小到大排序 , 按照排好的顺序去找同学做调查 。请你协助明明完成“去重”与“排序”的工作 。
> 输入格式
输入有两行 , 第1 行为1个正整数 , 表示所生成的随机数的个数

第2行有
个用空格隔开的正整数 , 为所产生的随机数 。
> 输出格式
输出也是两行 , 第1行为1个正整数
 , 表示不相同的随机数的个数 。
第2行为
个用空格隔开的正整数 , 为从小到大排好序的不相同的随机数 。
> 输入输出样例 输入 #1
1020 40 32 67 40 20 89 300 400 15
输出 #1
815 20 32 40 67 89 300 400
> 说明/提示
NOIP 2006 普及组 第一题
2.思路 & 题解
首先 , 这道题的核心思路就是“去重”和“排序” , 排序当然很简单 , sort即可 , 最重要的便是“去重” , 我们可以用一个bool类型数组来记录排序后的每个a[i]的下一个值a[i+1]是否与a[i]相等(虽然对输入的每个数都重新搜索一遍似乎也没有问题) 。假设输入了
,我就把bool[
]赋值为
 , 后面输入的
因为bool[10]为true,就读不进数组 。代码如下:
【洛谷P1059 [NOIP2006 普及组] 明明的随机数】#include #include\\刚刚被网友喷 , 说不要用 , 立马改正QWQusing namespace std;int a[105], n, tmp, top; \\top是一个累加变量 , 最后表示去重后剩下的数量bool p[1005]; \\判断数组int main(){cin >> n;for (int i = 0; i < n; i++){cin >> tmp;if (p[tmp] == 1) \\如果数组被插旗 , 就不记录到数组里continue;p[tmp] = 1; \\表示已经读入过了a[top++] = tmp; \\记录数据}sort(a, a + top); \\sort大法妙啊cout << top << endl;for (int i = 0; i < top; i++) \\最后输出 , 注意i < top , 不是ncout << a[i] << " ";return 0; \\养成好习惯}
童鞋们一定要输入 0啊啊啊!
ヾ( ̄▽ ̄)Bye~Bye~