給定n個數,每個數均不超過1.5*109,統計這些數各自出現的次數,並按照從小到大的順序輸出統計結果。
資料規模有1.5*109,所以雜湊關鍵字本身作為位址會爆
所以想到用雜湊表
除了記錄某個s是否出現,還要記錄出現的次數,所以可以用乙個二維陣列,加乙個儲存出現次數的即可。
完後,將雜湊表裡的數放在乙個新開的陣列,排序後輸出
#include#include#include#define h(x) x%p
#define p 1000007//質數
using namespace std;
struct a
ans[p];
int n,x,a[p][2],num;
//a[x][0] 記錄雜湊函式值為x的s值,a[x][2] 記錄這個 s 值出現了幾次
int loc(int x)
//查詢關鍵字在雜湊表的位置
bool cmp(a a,a b)
sort(ans+1,ans+1+num,cmp);//快速排序
for(int i=1;i<=num;i++)
cout<}
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,...