Test Message

b374: [福州19中]眾數

內容

由文件給出 N 個 1 到 30000 間無序數正整數,其中 1≤N≤10000,同一個正整數可能會出現多次,出現次數最多的整數稱為眾數。求出它的眾數及它出現的次數。


輸入

輸入文件第一行是正整數的個數 N,第二行開始為 N 個正整數。每兩個正整數之間用一個空格隔開。

12
2 4 2 3 2 5 3 7 2 3 4 3

輸出

輸出文件有若干行(因為眾數可能不唯一)

每行兩個數(之間用 1 個空格隔開),第 1 個是眾數,第 2 個是眾數出現的次數。

2 4
3 4


解題思路

基本的基數排序,在輸入時判斷最大值可以少用一個迴圈找最大值。

本題範例輸出有誤,數字間應為一個空白。


完整程式碼

AC (3ms, 312KB)
#include <stdio.h>
#define MAX 30000

int num[MAX + 1];

int main()
{
int n, tmp, max = 0;
scanf(" %d", &n);
for (int i = 1; i <= n; i++)
{
scanf(" %d", &tmp);
num[tmp]++;
if (max < num[tmp])
max = num[tmp];
}
for (int i = 1; i <= MAX; i++)
if (num[i] == max) printf("%d %d\n", i , max);
return 0;
}