zoukankan      html  css  js  c++  java
  • 统计数字

     

    链接: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;
        
    }
  • 相关阅读:
    执行器模式设计和使用
    你知道怎么用Idea抽取方法、创建class吗?
    intellij构建多模块项目
    解决IDEA16闪退的问题
    TestNG参数化测试-数据提供程序 @DataProvider方式
    java第三节 面向对象(上)
    java第二节 基本数据类型
    memcache使用方法测试
    mysql Substr与char_length函数的应用
    《web与移动开发》征文活动
  • 原文地址:https://www.cnblogs.com/EdSheeran/p/7750197.html
Copyright © 2011-2022 走看看