申請SAE

如果您發現本博客的外觀很難看,那是因為部分外觀文件被中國.國家.防火.牆屏.蔽所致!
請翻~牆!

我的Wordpress博客的地址: http://zhuyf.tk/

2011年10月26日 星期三

NOIP2006普及組 明明的隨機數 random 解題報告

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

【輸入格式】
輸入文件 random.in 有 2 行,第 1 行爲 1 個正整數,表示所生成的隨機數的個數:N
第 2 行有 N 個用空格隔開的正整數,爲所產生的隨機數。

【輸出格式】
輸出文件 random.out 也是 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

【分析】
再水不過的題了,直接模擬,然後上快速排序。

【我的代碼】
01 //NOIP2006-Junior-Random
02 #include <cstdio>
03 #include <cstdlib>
04 #include <iostream>
05 using namespace std;
06
07 int Compare(const void *a,const void *b)
08 {
09     return *(int *)a-*(int *)b;
10 }
11
12 int main()
13 {
14     freopen("random.in","r",stdin);
15     freopen("random.out","w",stdout);
16     int num[101]={0};
17     int n;
18     scanf("%d",&n);
19     for (int i=1;i<=n;i++)
20         scanf("%d",&num[i]);
21     int reduce=0;
22     for (int i=1;i<=n;i++)
23         for (int j=i+1;j<=n;j++)
24             if (num[j]!=1001 && num[i]!=1001 && num[j]==num[i])
25                 {
26                     num[j]=1001;
27                     reduce++;
28                 }
29     qsort(num+1,n,sizeof(int),Compare);
30     cout<<n-reduce<<endl;
31     for(int i=1;i<=n-reduce;i++)
32         cout<<num[i]<<" ";
33     cout<<endl;
34     return 0;
35 }
正在连接评测机...

已连接到评测机
GRID 1
名称 Flitty
系统版本 1.00
备注 COGS 1号评测机 Flitty
正在编译...
编译成功

测试点 结果 得分 运行时间 内存使用 退出代码
1 正确 10 0.018 s 273 KB 0
2 正确 10 0.001 s 273 KB 0
3 正确 10 0.001 s 273 KB 0
4 正确 10 0.001 s 273 KB 0
5 正确 10 0.001 s 273 KB 0
6 正确 10 0.001 s 273 KB 0
7 正确 10 0.001 s 273 KB 0
8 正确 10 0.001 s 273 KB 0
9 正确 10 0.001 s 273 KB 0
10 正确 10 0.001 s 273 KB 0
运行完成
运行时间 0.024 s
平均内存使用 273 KB
测试点通过状况 AAAAAAAAAA
得分:100
恭喜你通过了全部测试点!

沒有留言:

張貼留言