当前位置:首页 > 题解目录 > 正文内容

【题解】统计自然数

亿万年的星光5年前 (2021-06-06)题解目录15239

【题目描述】

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

【输入描述】

        输入包含n+1行:         第1行是整数n,表示自然数的个数。         

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

【输出描述】

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

【样例输入】

8
2
4
2
4
5
100
2
100

【样例输出】

2 3
4 2
5 1
100 2

【来源】NOIP2007年提高组

【题目分析】

  1.   桶排很难拿满分,数据太大了

  2. 可以先用sort排完之后再处理数据


【参考答案1】

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int a[200010],n,t=1;
int main() {
	scanf("%d",&n);
	for(int i=1; i<=n; i++) scanf("%d",&a[i]);
	sort(a+1,a+n+1);
	for(int i=1; i<=n+1; i++) {
		if(a[i]==a[i-1]) ++t;
		else if(i!=1) {
			printf("%d %d\n",a[i-1],t);
			t=1;
		}
	}
	return 0;
}

【参考答案2】

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int a[1000005];
int n,i,k,cnt=0,j;
int main()
{
    cin>>n;
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }
    sort(a,a+n);
    for(i=0;i<n;i++)
    {
        if(i==0)
        {
           j=a[i];
           cnt=1;
           continue;
        }
        if(j!=a[i])
        {
            cout<<j<<" "<<cnt<<endl;
            j=a[i];
            cnt=1;
        }
        else if(j==a[i])cnt++;
    }
    cout<<j<<" "<<cnt<<endl;
    return 0;
}


    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    分享给朋友:

    相关文章

    【题解】修改回文

    【题目描述】如果一个字符串,顺读与倒读的内容一样,称这个字符串为回文。例如 aka 是一个回文,noon 也是一个回文。给定一个字符串,请计算最少需要修改多少个字符,才能...

    【题解】银行排队

    【题目描述】我们大多都有在银行排队的经历,唉,那坑爹的排队啊!现在就让我们来算算我们这些客户平均需要等多久吧。每天刚开始时银行会开m个窗口来为我们total个客户办理业务,当有客户需要办理业务时,先选...

    【题解】移动路线

    【题目描述】X桌子上有一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n)。小明是个调皮的孩子,一...

    【题解】泥泞路(2019青岛市程序设计竞赛)

    【题目描述】大雨过后,从小A的农场到镇上的公路上有一些泥泞路段,为了方便出行,他决定将若干块长度为L的木板可以铺在这些泥泞路段上,问他至少需要多少块木板,才能将所有的泥泞路段覆盖住。【输入】第一行为正...

    【题解】切割绳子

    【题目描述】有N条绳子,它们的长度分别为Li。如果从它们中切割出K条长度相同的绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位(直接舍掉2位后的小数)。【输入描述】第一行两个整数N和K(0&l...

    字符全排列(2)

    【题目描述】从n个字符(n从a开始,依次递增)中选取r个字符,对r个字符进行不重复排列。字典序小的在前面。【输入描述】一行,n和r【输出描述】r个字符的所有组合,每种组合占一行,字符和字符之间用空格隔...