统计数字(信息学奥赛一本通-T1239)
生活随笔
收集整理的這篇文章主要介紹了
统计数字(信息学奥赛一本通-T1239)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
【題目描述】
某次科研調(diào)查時得到了n個自然數(shù),每個數(shù)均不超過1500000000(1.5?10^9)。已知不相同的數(shù)不超過10000個,現(xiàn)在需要統(tǒng)計(jì)這些自然數(shù)各自出現(xiàn)的次數(shù),并按照自然數(shù)從小到大的順序輸出統(tǒng)計(jì)結(jié)果。
【輸入】
第一行是整數(shù) n,表示自然數(shù)的個數(shù);
第2~n+1每行一個自然數(shù)。
【輸出】
包含m行(m為n個自然數(shù)中不相同數(shù)的個數(shù)),按照自然數(shù)從小到大的順序輸出。每行輸出兩個整數(shù),分別是自然數(shù)和該數(shù)出現(xiàn)的次數(shù),其間用一個空格隔開。
【輸入樣例】
8
2
4
2
4
5
100
2
100
【輸出樣例】
2 3
4 2
5 1
100 2
【源程序】
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<string> #define INF 999999999 #define N 1000001 #define MOD 1000000007 #define E 1e-5 using namespace std; int a[N]; void quicksort(int left,int right) {int i=left,j=right,mid=a[(left+right)/2];while(i<=j){while(a[i]<mid)i++;while(a[j]>mid)j--;if(i<=j){swap(a[i],a[j]);i++;j--;}}if(i<right)quicksort(i,right);if(left<j)quicksort(left,j); } int main() {int n;int cnt=1;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];quicksort(1,n);while(cnt<=n){int s=a[cnt],k=cnt;while(s==a[cnt])cnt++;cout<<a[cnt-1]<<" "<<cnt-k<<endl;}return 0; }總結(jié)
以上是生活随笔為你收集整理的统计数字(信息学奥赛一本通-T1239)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 放苹果(信息学奥赛一本通-T1192)
- 下一篇: 山区建小学(信息学奥赛一本通-T1197