题解:P1059 [NOIP2006 普及组] 明明的随机数

做题思路

这题又让我们排序,又让我们去重,考虑到数字大小不超过一千,我们可以开个桶数组 cntcntcnticnt_i 表示数字 ii 在序列中出现的个数,然后遍历桶,如果发现 cnti>0cnt_i>0,记录答案。

code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,count[1005]={0},tf[1005]={0},tmp,sum=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>tmp;
if(tf[tmp]==0){
count[tmp]++;
tf[tmp]=1;
}
}
for(int i=0;i<1005;i++)if(tf[i]>0)sum++;
printf("%d\n",sum);
for(int i=0;i<1005;i++)if(count[i]>0)printf("%d ",i);
return 0;
}

题解:P1059 [NOIP2006 普及组] 明明的随机数
http://zhoujunchen666.github.io/2025/08/18/题解:P1059-NOIP2006-普及组-明明的随机数/
作者
zhoujunchen
发布于
2025年8月18日
许可协议