luogu P1097 統計數字
阿新 • • 發佈:2017-07-13
font for -1 string name int esp space light
題目描述
某次科研調查時得到了n個自然數,每個數均不超過1500000000(1.5*10^9)。已知不相同的數不超過10000個,現在需要統計這些自然數各自出現的次數,並按照自然數從小到大的順序輸出統計結果。
輸入輸出格式
輸入格式:
輸入文件count.in包含n+1行;
第一行是整數n,表示自然數的個數;
第2~n+1每行一個自然數。
輸出格式:
輸出文件count.out包含m行(m為n個自然數中不相同數的個數),按照自然數從小到大的順序輸出。每行輸出兩個整數,分別是自然數和該數出現的次數,其間用一個空格隔開。
輸入輸出樣例
輸入樣例#1:8 2 4 2 4 5 100 2 100輸出樣例#1:
2 3 4 2 5 1 100 2
說明
40%的數據滿足:1<=n<=1000
80%的數據滿足:1<=n<=50000
100%的數據滿足:1<=n<=200000,每個數均不超過1500 000 000(1.5*109)
NOIP 2007 提高第一題
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> using namespace std; const int N=300010; string s[N]; int n; inline bool cmp(string a,string b) { if(a.length()!=b.length()) return a.length()<b.length(); else for(int i=0;i<a.length();i++) if(a[i]!=b[i]) return a[i]<b[i]; } int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) cin>>s[i]; sort(s+1,s+n+1,cmp); for(int i=1;i<=n;i++) { int tot=1; for(int j=i+1;s[j]==s[i];j++) tot++; i+=tot-1; cout<<s[i]<<" "<<tot<<endl; } return 0; }
luogu P1097 統計數字