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);
}