zoukankan      html  css  js  c++  java
  • noi.openjudge 1.13.15

    http://noi.openjudge.cn/ch0113/15/

    总时间限制: 
    1000ms
    内存限制: 
    65536kB
    描述

    输入一个长度为N的整数序列 (不多于128个整数),每个整数的范围在[-1052,1052],计算这个序列的众数。 

    众数是指出现次数最多的那个数。 

    如果有多个数出现的次数都达到最多,则取在原序列最先出现的数为众数;如果所有的数都相等,则返回"no"。

    输入
    第一行为序列长度N。

    然后是N个数,每一个数的范围都是在[-10^52,10^52]。 注意,这N个数之间可能有若干个空行隔开。

    注意,输入数据可能有一些冗余表达信息,具体来说:

    1) 正数和0前面可能有前导0和'+'符号,例如
    +000123=123
    +0000=0
    -0000=0
    2)每个数字中不含有空格和其他非数字字符,例如不会出现"100 0"或者"- 100"。
    3)每个数字前面至多有一个符号,即不会出现+(-1)、-(+4)和-(-1)等情况。
    输出
    输出只有 1 行:

    该序列的众数或者”no”。

    如果有多个数出现的次数都达到最多,则取最先出现的数为众数,并且输出形式应该最简形式。

    例如,如果原序列众数为+000123,则输出123;如果原序列众数为+0000或者-0000或者0000,输出0。

    负数正常输出,例如:如果原序列众数为-000000001111,就输出-1111。
    样例输入
    6
    -00001
    10000
    00011111111111111111111111111111111111
    -01
    +000000011111111111111111111111111111111111
    -00000000000001
    样例输出
    -1



    注意:

    1.数组要开大一些,因为会有前导0,而题目说的是除了前导0的位数,这个位数也没有包括符号。如果出现runtime error,那么很可能是这个原因

    2.注意0,不要区分+0和-0,他们属于同一个数。

    3.要所有的数,都是同一个数时,才可以输出no,如1,1,1,1这样的序列,如果是1,1,1,2,2,2这样的,则输出2

    4.n的n次方不会超时,数据比较少


    AC代码 C语言

    #include<stdio.h>
    #include<string.h>
    int book[600];
    char a[600][750];
    char s[750];
    int main()
    {
    
        int n,t,flag,j;
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            scanf("%s",s);
            t=strlen(s);
            //if(t==0){i--;continue;}
            if(s[0]=='-'){a[i][0]='-';}
            else a[i][0]='+';
            flag=0;
            j=1;
            for(int k=0;k<t;k++){
                if(s[k]>='1'&&s[k]<='9'){flag=1;}
                if(flag==1){a[i][j]=s[k];j++;}
            }
            if(j==1){a[i][1]='0';a[i][0]='+';}
        }
        for(int i=0;i<n;i++){
            //if(book[i]!=0){continue;}
            for(int k=0;k<n;k++){
                if(strcmp(a[i],a[k])==0){book[i]++;}
            }
        }
        flag=0;
        for(int i=1;i<n;i++){
            if(strcmp(a[0],a[i])!=0){flag=1;break;}
        }
        int maxx=0,ans=0;
        for(int i=0;i<n;i++){
            if(maxx<book[i]){maxx=book[i];ans=i;}
        }
        t=strlen(a[ans]);
        if(flag==1){
            //if(t>=250){return 0;}
            //printf("t=====%d
    ",t);
            for(int i=0;i<t;i++){
                if(a[ans][i]=='+'){continue;}
                else printf("%c",a[ans][i]);
            }
        }
        else printf("no
    ");
    }
    

  • 相关阅读:
    MySQL内连接和外连接
    MySQL 重命名数据库
    linux查看文件大小
    Linux合并两个文件夹内容
    Linux压缩和解压命令
    深度学习反向求导
    深度学习网络压缩模型方法总结
    cuda培训素材
    cuda编程-卷积优化
    交叉熵代价函数(损失函数)及其求导推导
  • 原文地址:https://www.cnblogs.com/ZGQblogs/p/9380877.html
Copyright © 2011-2022 走看看