P1059 明明的隨機數【去重排序】
阿新 • • 發佈:2017-10-25
none 保留 描述 不同的 splay onclick orange ins pre
題目描述
明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了N個1到1000之間的隨機整數(N≤100),對於其中重復的數字,只保留一個,把其余相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成“去重”與“排序”的工作。
輸入輸出格式
輸入格式:
輸入有2行,第1行為1個正整數,表示所生成的隨機數的個數:
N 第2行有N個用空格隔開的正整數,為所產生的隨機數。
輸出格式:
輸出也是2行,第1行為1個正整數M,表示不相同的隨機數的個數。第2行為M個用空格隔開的正整數,為從小到大排好序的不相同的隨機數。
輸入輸出樣例
輸入樣例#1: 復制10 20 40 32 67 40 20 89 300 400 15輸出樣例#1: 復制
8 15 20 32 40 67 89 300 400
說明
NOIP 2006 普及組 第一題
【代碼】:
#include<bits/stdc++.h> using namespace std; int main() { int n,a[1005]; set<int> s; //自帶排序+去重 scanf("%d",&n); for(intView Codei=0;i<n;i++) { scanf("%d",&a[i]); s.insert(a[i]); } cout<<s.size()<<endl; for(set<int>::iterator it = s.begin();it!=s.end();it++)//註意遍歷使用叠代器 { cout<<*it<<" "; } cout<<endl; return 0; } /* 10 20 40 32 67 40 20 89 300 400 15*/
P1059 明明的隨機數【去重排序】