描述
笨小熊的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小熊就认为这是个Lucky Word,这样的单词很可能就是正确的答案。
- 输入
- 第一行数据N(0<N<100)表示测试数据组数。
- 每组测试数据输入只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。
- 输出
- 每组测试数据输出共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;
- 第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0
- 样例输入
- 2
- error
- olympic
- 样例输出
- Lucky Word
- 2
- No Answer
- 0
1 #include <stdio.h> 2 #include <string.h> 3 4 int main(){ 5 int T; 6 char s[101]; 7 int amount[27]; 8 int length; 9 int i; 10 int j; 11 int max; 12 int min; 13 int flag[200]; 14 15 memset(flag,0,sizeof(int)*200); 16 flag[0]=1; 17 flag[1]=1; 18 19 for(i=2;i*i<200;i++){ 20 if(flag[i]==0){ 21 for(j=i*i;j<200;j+=i) 22 flag[j]=1; 23 } 24 } 25 26 scanf("%d",&T); 27 28 while(T--){ 29 scanf("%s",&s); 30 memset(amount,0,sizeof(int)*27); 31 length=strlen(s); 32 33 for(i=0;i<length;i++){ 34 amount[s[i]-'a'+1]++; 35 } 36 37 for(i=1;i<=26;i++){ 38 if(amount[i]!=0){ 39 max=amount[i]; 40 min=amount[i]; 41 break; 42 } 43 } 44 45 for(i=1;i<=26;i++){ 46 if(amount[i]!=0 && amount[i]<min) 47 min=amount[i]; 48 49 if(amount[i]!=0 && amount[i]>max) 50 max=amount[i]; 51 } 52 53 if(flag[max-min]==0){ 54 printf("Lucky Word %d ",max-min); 55 } 56 57 else 58 printf("No Answer 0 "); 59 } 60 61 return 0; 62 }