SSL1062 統計數字 暴力 雜湊

2021-10-08 07:16:42 字數 1648 閱讀 6773

某次科研調查時得到了n個自然數,每個數均不超過1500000000(1.5*109)。已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,並按照自然數從小到大的順序輸出統計結果。

輸入包含n+1行;

第一行是整數n,表示自然數的個數;

第2~n+1每行乙個自然數。

輸出包含m行(m為n個自然數中不相同數的個數),按照自然數從小到大的順序輸出。每行輸出兩個整數,分別是自然數和該數出現的次數,其間用乙個空格隔開。

824

245100

2100

234

251100

2

40%的資料滿足:1<=n<=1000

80%的資料滿足:1<=n<=50000

100%的資料滿足:1<=n<=200000,每個數均不超過1500 000 000(1.5*109)

法1:我直接暴力。

過一遍整個陣列,i隨著j的數值變化,累加即可。

法2:雜湊表做法。

開兩個結構體,第二個是為了不讓排序後的前面的格仔空出來。其他的就是儲存數和其個數,直接輸出就完事。

暴力

#include

#include

#include

#include

using

namespace std;

int n;

int a[

200001

],b[

10001];

intmain()

sort

(a+1

,a+n+1)

;for

(int i=

1;i<=n;

)//不用i++,i在裡面改變

i=j;

printf

("%d\n"

,sum);}

return0;

}

雜湊
#include

#include

#include

#include

#define p 1000007

using

namespace std;

int n,m;

struct node

a[p+10]

;struct node2

b[p+10]

;int

hash

(int x)

intlocate

(int x)

return

(f+i)

%p;}

void

insert

(int x)

//插入元素

//bool pd(int x)查詢是否存在的函式

//bool

cmp(node2 l,node2 r)

intmain()

int tot=0;

for(

int i=

0;isort

(b+1

,b+tot+

1,cmp)

;for

(int i=

1;i<=tot;i++

)return0;

}

A 統計數字

time limit 1 sec memory limit 128 mb submit 51 solved 28 submit status web board 某次科研調查時得到了n個自然數,每個數均不超過1500000000 1.5 109 已知不相同的數不超過10000個,現在需要統計這些自然...

頁碼統計(統計數字)

牛牛新買了一本演算法書,演算法書一共有n頁,頁碼從1到n。牛牛於是想了乙個演算法題目 在這本演算法書頁碼中0 9每個數字分別出現了多少次?輸入描述 輸入包括乙個整數n 1 n 1,000,000,000 輸出描述 輸出包括一行10個整數,即0 9這些數字在頁碼中出現的次數,以空格分隔。行末無空格。示...

統計數字問題

在王曉東編著的 演算法設計與實驗題解 中看到的這個問題,問題描述如下 一本書的頁碼從自然數1開始順序編碼直到自然數n。書的頁碼按照通常的習慣編排,每個頁碼都不含多餘的前導數字0。例如第6頁用6表示而不是06或006。數字統計問題要求對給定書的總頁碼,計算出書的全部頁碼中分別用到多少次數字0,1,2,...