ZJNU——统计数字(1402)

来源:互联网 发布:佛山市司法拍卖淘宝网 编辑:程序博客网 时间:2024/05/05 23:37

Description

某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。

Input

第1行是整数n,表示自然数的个数。
第2~n+1行每行一个自然数。

Output

包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。

Sample Input

82 4 2 4 5 100 2 100

Sample Output

2 34 25 1100 2

 

我一开始看到还以为要用map来做,其实不用map也可以啊。

就是开一个大于10000的数组,然后把数字存进去,并且用sort排序一遍(因为它是要从小到大排序)。

要判断该数出现的次数的话,那么就判断它是否和前面那个数相等就好了,如果相等,计数器加1;如果不相等,那么计数器清零,然后再进行自增。

#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;__int64 a[10002];int main(){int n,i,j,k,ans;while(scanf("%d",&n)!=EOF){ans=1;memset(a,0,sizeof(a));for(i=1;i<=n;i++)scanf("%I64d",&a[i]);sort(a+1,a+n+1);for(i=2;i<=n;i++){if(a[i]==a[i-1]) ans++;else if(a[i]!=a[i-1]) {printf("%I64d %d\n",a[i-1],ans); ans=1;}}printf("%I64d %d\n",a[i-1],ans);}}


 

0 0
原创粉丝点击