• 统计数字


     

    链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1239


    时间限制: 1000 ms         内存限制: 65536 KB

    【题目描述】

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

    【输入】

    第一行是整数n,表示自然数的个数;

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

    【输出】

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

    【输入样例】

    8
    2
    4
    2
    4
    5
    100
    2
    100
    

    【输出样例】

    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*10^9)。

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    int a[200005],t[200005];
    void msort(int l,int r)
    {
        if(l==r)return ;
        int mid=(l+r)/2;
        msort(l,mid);
        msort(mid+1,r);
        int i=l,j=mid+1,m=l;
        while(i<=mid&&j<=r)
        {
            if(a[i]>a[j])t[m++]=a[j++];
            else t[m++]=a[i++];
        }
        while(i<=mid)t[m++]=a[i++];
        while(j<=r)t[m++]=a[j++];
        for(int i=l;i<=r;i++)a[i]=t[i];
    }
    int main()
    {
        int n,flag=1;
        cin>>n;
        for(int i=1;i<=n;i++)cin>>a[i];
        msort(1,n);
        int k=a[1],cnt=0;
        for(int i=1;i<=n;i++)
        {
            if(a[i]==k)cnt++;
            else {
                cout<<k<<" "<<cnt<<endl;
                k=a[i];
                cnt=1;
            }
        }
        cout<<a[n]<<" "<<cnt<<endl;
        return 0;
        
    }
  • 相关阅读:
    AT SELECTIONSCREEN的用法
    ADD的用法
    ~的用法
    DIV+CSS布局
    CSS 列表
    CSS 文本
    VC include 路径解析
    CRITICAL_SECTION临界区学习
    UI设计时要注意的几个方面
    使用和扩展marshal_as库
  • 原文地址:https://www.cnblogs.com/EdSheeran/p/7750197.html
Copyright © 2020-2023  润新知