PTA——luck word

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




猜你喜欢

转载自blog.csdn.net/weixin_41423494/article/details/80634719