1. 程式人生 > >笨小猴 (C語言)

笨小猴 (C語言)

標題06:笨小猴

總時間限制: 1000ms 記憶體限制: 65536kB

標題描述

笨小猴的詞彙量很小,所以每次做英語選擇題的時候都很頭疼。但是他找到了一種方法,經試驗證明,用這種方法去選擇選項的時候選對的機率非常大!

這種方法的具體描述如下:假設maxn是單詞中出現次數最多的字母的出現次數,minn是單詞中出現次數最少的字母的出現次數,如果maxn-minn是一個質數,那麼笨小猴就認為這是個Lucky Word,這樣的單詞很可能就是正確的答案。

標題輸入

只有一行,是一個單詞,其中只可能出現小寫字母,並且長度小於100。
輸出
共兩行,第一行是一個字串,假設輸入的的單詞是Lucky Word,那麼輸出“Lucky Word”,否則輸出“No Answer”;
第二行是一個整數,如果輸入單詞是Lucky Word,輸出maxn-minn的值,否則輸出0。

樣例輸入

樣例 #1: error

樣例 #2: olympic

樣例輸出

樣例 #1:
Lucky Word
2

樣例 #2:
No Answer
0

提示

單詞error中出現最多的字母r出現了3次,出現次數最少的字母出現了1次,3-1=2,2是質數。
單詞olympic中出現最多的字母i出現了2次,出現次數最少的字母出現了1次,2-1=1,1不是質數。

注意:不可以初始化MIN為1,而應該MIN=strlen(s),避免錯誤。
例如:輸入qqqqqq時,MIN=6而非1

上程式碼

#include<stdio.h>
#include<string.h>
#define maxn 300
#include<math.h>
int max(int MAX,int voc)
{
    if(MAX<voc) MAX=voc;
    return MAX;
}
int min(int MIN,int voc)
{
    if(MIN>voc) MIN=voc;
    return MIN;

}
int is(int span)
{
    int i;
    if(span==1||span==0) return 0;//若span為1或者0,不是質數,返回0
    else{
            for(i=2; i<span; i++)
              if(span%i==0) return 0;//不是質數返回0
    }
    return 1;//是質數返回1
}
int main(void)
{
    int voc[maxn]= {0};
    char s[maxn],cha;
    scanf("%s",s);

    int MAX=1,MIN=strlen(s);
    int i,j,span;
    int x=strlen(s);
 
    for(i=0; i<strlen(s); i++) //找出每個字元的出現次數
    {
        for(j=0; j<strlen(s); j++)//每次都從第一個字元開始找
            if(s[i]==s[j]) voc[i]++;
        MAX=max(MAX,voc[i]);
        MIN=min(MIN,voc[i]);
    }
    span=MAX-MIN;
    if(is(span))
    {
        printf("Lucky Word\n%d",MAX-MIN);
    }
    else
    {
        printf("No Answer\n0");

    }
    return 0;
}