7-4 cysjiang求帮助(25 分)
笨笨的cysjiang的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么cysjiang就认为这是个Lucky Word,这样的单词很可能就是正确的答案。
输入格式:
输入只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。
输出格式:
输出共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”; 第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0。
输入样例:
error
输出样例:
Lucky Word
这道题主要在定义一个数组记录对应字母出现的次数,然后找出现次数最少的字母的次数,和出现次数最多的字母的个数(这里要特别注意,字母出现次数最少的不是0,所以用比较的方法不可以,需要对这个记录的数字进行从小到大排序,第一个不为0的就是出现次数最少的个数,最后一个就是出现次数最多的个数)然后相减得到的数判断是不是素数,这里还要注意1不是素数,2是素数,需要特别写出。
#include<stdio.h> int main() { int a[26]={0},i,j; char s[101]; scanf("%s",s); for(i=0;s[i]!='\0';i++) { if(s[i]=='a') a[0]++; if(s[i]=='b') a[1]++; if(s[i]=='c') a[2]++; if(s[i]=='d') a[3]++; if(s[i]=='e') a[4]++; if(s[i]=='f') a[5]++; if(s[i]=='g') a[6]++; if(s[i]=='h') a[7]++; if(s[i]=='i') a[8]++; if(s[i]=='j') a[9]++; if(s[i]=='k') a[10]++; if(s[i]=='l') a[11]++; if(s[i]=='m') a[12]++; if(s[i]=='n') a[13]++; if(s[i]=='o') a[14]++; if(s[i]=='p') a[15]++; if(s[i]=='q') a[16]++; if(s[i]=='r') a[17]++; if(s[i]=='s') a[18]++; if(s[i]=='t') a[19]++; if(s[i]=='u') a[20]++; if(s[i]=='v') a[21]++; if(s[i]=='w') a[22]++; if(s[i]=='x') a[23]++; if(s[i]=='y') a[24]++; if(s[i]=='z') a[25]++; } int min = 0,max; for(i=0;i<25;i++) \\进行排序 { int flag=0; for(j=0;j<26-i-1;j++) if(a[j]>a[j+1]) { int t; t=a[j]; a[j]=a[j+1]; a[j+1]=t; flag=1; } if(flag==0) break; } for(i=0;i<26;i++) { if(a[i]!=0) { min=a[i]; break; } } max=a[25]; int flag=0; for(i=2;i<max-min;i++) { if((max-min)%i==0) { flag=1; break; } } if((max-min)==1) flag=1; if(((max-min)==2)) flag=0; if(flag==1) printf("No Answer\n0"); else printf("Lucky Word\n%d",max-min); }