您的位置:首页 > 其它

1068统计数字解题报告

2015-01-16 22:15 176 查看
上次写的代码改改就对了。。。今天惊奇的发现VS2010居然可以用sort,原来是要建成cpp的格式。。。

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

输入
包含n+1行:

第1行是整数n(1<=n<=200000),表示自然数的个数。

第2~n+1行每行一个自然数。

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

2

4

2

4

5

100

2

100

样例输出
2 3

4 2

5 1

100 2
代码:

#include<stdio.h>

#include<algorithm>

#define N 200000

int a[N+10];

using namespace std;

int main()

{

int num,i,j,n;

while(scanf("%d",&n)!=EOF)

{

for(i=0;i<n;i++)

scanf("%d",&a[i]);

sort(a,a+n);

for(j=0,num=1;j<n;j++)

{

if(a[j+1]==a[j])

{

num+=1;

}

else

{

printf("%d %d\n",a[j],num);

num=1;

}

}

}

return 0;

}

思路就是:输入,排序,输出。。输出的时候如果后一个数等于前一个数(计数器num++ Ps:num初值是1.)如果后一个数不等于前一个数就输出呗。没了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: