笨小猴 (C語言)
阿新 • • 發佈:2018-12-22
標題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; }