• 洛谷-统计数字-NOIP2007提高组复赛


    题目描述 Description

    某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
     输入输出格式 Input/output
    输入格式:
    输入文件count.in包含n+1行;
    第一行是整数n,表示自然数的个数;
    第2~n+1每行一个自然数。
    输出格式:
    输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
     输入输出样例 Sample input/output
    样例测试点#1

    输入样例:

    8
    2
    4
    2
    4
    5
    100
    2
    100
    输出样例:

    2 3
    4 2
    5 1
    100 2
    说明 description

    40%的数据满足:1<=n<=1000
    80%的数据满足:1<=n<=50000
    100%的数据满足:1<=n<=200000,每个数均不超过1500 000 000(1.5*109)
    NOIP 2007 提高第一题

    思路:首先要对输入的数据进行升序排序,然后从头开始找数字出现的个数,找过的记得标记(我这里标记为-100),然后计数器++即可

    代码如下:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 int fun(const void *a,const void *b)//升序排序 
     4 {
     5     return *(int*)a-*(int*)b;
     6 }  
     7 int main()
     8 {
     9     int n,i,lala,j;
    10     int ans=0;
    11     int a[200000];
    12     scanf("%d",&n);
    13     for(i=0;i<n;i++)
    14     {
    15         scanf("%d",&a[i]);
    16     }
    17     qsort(a,n,sizeof(int),fun);
    18     for(i=0;i<n;i++)
    19     {
    20         if(a[i]!=-100)
    21         {
    22             lala=a[i];
    23             for(j=0;j<n;j++)
    24             {
    25                 if(a[j]==lala) 
    26                 {
    27                     ans++;
    28                     a[j]=-100;
    29                 }            
    30             }
    31             printf("%d %d",lala,ans);
    32             printf("
    ");
    33             ans=0;
    34         }        
    35     }
    36     return 0;
    37 }
  • 相关阅读:
    安装系统时碰上hal.dll文件丢失或损坏问题
    系统无法停止USB接口的“通用卷”的解决方法
    提取嵌入excel或word中flash的VBA代码
    打印机的PCL驱程和PS驱程的区别!
    spoolsv.exe占用资源的解决方法
    检测硬盘与内存中的隐藏病毒
    关于Windows默认共享的一些认识
    SmartClient + WebServices 开发 1
    常用 ajax 框架比较摘自网络
    AJAX 框架 Prototype
  • 原文地址:https://www.cnblogs.com/geek-007/p/5170675.html
Copyright © 2020-2023  润新知