10分求助悬关

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

``` #include<bits/stdc++.h> using namespace std; int main(){ int a[1001],n,t,sum=0; for(int i=1;i<=1000;i++){ a[i]=0; } cin >> n; for(int i=1;i<=n;i++){ cin >> t; a[t]=1; } for(int i=1;i<=1000;i++){ if(a[i]==1){ sum++; } } cout << sum << endl; for(int i=1;i<=1000;i++){ if(a[i]==1){ cout << i << " "; } } return 0; } 给个关注
by huang_yi_hang2014 @ 2024-03-11 21:11:10


@[chenqile](/user/953664) ```cpp #include <cstdio> int main(){ int n, a[1001] = {}, tmp; scanf("%d", &n); for (int i = 0; i < n; i++){ scanf("%d", &tmp); a[tmp]++; } for (int i = 0; i < 1001; i++){ if (a[i] > 1){ n = n - a[i] + 1; } } printf("%d\n", n); for (int i = 0; i < 1001; i++){ if (a[i]){ printf("%d ", i); } } return 0; } ``` 去重是当a[i]大于1是重复的个数是a[i]-1而不是1
by wjr_jok @ 2024-03-11 21:11:18


@[chenqile](/user/953664) ```cpp #include <cstdio> int main(){ int n, a[1001] = {}, tmp; scanf("%d", &n); for (int i = 0; i < n; i++){ scanf("%d", &tmp); a[tmp]++; } for (int i = 0; i < 1001; i++){ while(a[i] > 1){ n--; --a[i]; } } printf("%d\n", n); for (int i = 0; i < 1001; i++){ if (a[i]){ printf("%d ", i); } } return 0; } ``` 改成 $while$ 并且同时 $--a[i]$ 就好了。
by lqsy002 @ 2024-03-11 21:16:28


有效答案有wjr_jok,给一个关注
by chenqile @ 2024-03-11 21:34:32


```cpp #include<iostream> using namespace std; int a[10005]={},b[10005]={}; int main() { int n,t,sum=0; cin>>n; for(int i=1;i<=n;i++) { cin>>t; a[t]=1; } for(int i=1;i<=1000;i++) { if(a[i]==1) { sum++; } } cout<<sum<<endl; for(int i=1;i<=1000;i++) { if(a[i]==1) { cout<<i<<" "; } } return 0; } ``` @[chenqile](/user/953664)
by yicheng121212 @ 2024-04-14 15:15:56


@[yicheng121212](/user/995655) ,远古帖你也回答,已经解决了
by chenqile @ 2024-04-14 16:28:59


# 远古帖?? @chenqile! chenqile 发表于 2024-03-11 21:05
by yicheng121212 @ 2024-04-21 09:14:14


|