天天看點

noip2006 明明的随機數 (模拟)

A1155. 明明的随機數

1.0s   記憶體限制:

256.0MB  

​​719​​   AC次數:

387   平均分:

58.54

将本題分享到:

​​檢視未格式化的試題​​​   

​​​送出​​​   

​​​試題讨論​​

試題來源

  NOIP2006 普及組

問題描述

  明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了N個1到1000之間的随機整數(N≤100),對于其中重複的數 字,隻保留一個,把其餘相同的數去掉,不同的數對應着不同的學生的學号。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成 “去重”與“排序”的工作。

輸入格式

  輸入檔案 有2行,第1行為1個正整數,表示所生成的随機數的個數:

  N

  第2行有N個用空格隔開的正整數,為所産生的随 機數。

輸出格式

  輸出檔案也是2行,第1行為1個正整數M,表示不相同的随機數的個數。第2行為M個用空格隔開的正整數,為從小到大排好序的不相同的随機數。

樣例輸入

10

20 40 32 67 40 20 89 300 400 15

樣例輸出

8

15 20 32 40 67 89 300 400

資料規模和約定

代碼:

#include<cstdio>
#include<algorithm>
#define maxn 100
using namespace std;
int n,a[maxn+20];

int main()
{
  int i,j,k;
  scanf("%d",&n);
  for(i=1;i<=n;i++)scanf("%d",&a[i]);
  sort(a+1,a+n+1);
  
  for(a[0]=1,i=2;i<=n;i++)
    if(a[i]!=a[i-1])a[++a[0]]=a[i];
  printf("%d\n",a[0]);
  for(i=1;i<a[0];i++)printf("%d ",a[i]);
  printf("%d\n",a[a[0]]); 
  return 0;
}