1. 程式人生 > >noi.openjudge 1.13.15

noi.openjudge 1.13.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\n",t);
        for(int i=0;i<t;i++){
            if(a[ans][i]=='+'){continue;}
            else printf("%c",a[ans][i]);
        }
    }
    else printf("no\n");
}