蓝桥杯-笨小猴学习记录

/*
笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设 maxnmaxn 是单词中出现次数最多的字母的出现次数,minnminn 是单词中出现次数最少的字母的出现次数,
如果 maxn-minnmaxn−minn 是一个质数,那么笨小猴就认为这是个 Lucky Word,这样的单词很可能就是正确的答案。

输入描述
输入一行,是一个单词,其中只可能出现小写字母,并且长度小于 100。

输出描述
输出两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出Lucky Word,否则输出No Answer;
第二行是一个整数,如果输入单词是 Lucky Word,输出 maxn-minnmaxn−minn 的值,否则输出 0。*/
#include <stdio.h>
#include <math.h>
#include <string.h>
int isPrime (int x)
{
    if(x ==1)
    {
        return 0;
    }
    if(x ==2 || x ==3 || x == 5)
    {
        return 1;
    }
    if((x % 2 == 0) || (x % 3 == 0))
    {
        return 0;
    }
    for(int i=6;i < sqrt(x); i+=6)
    {
        if(x % (i-1) == 0 || x % (i+1) == 0)
        {
            return 0;
        }
    }
    return 1;
}
void countnumber(char* str,int* value)
{
    for(int i = 0; str[i]!='\0';i++)
    {
        value[str[i] - 96]++;
    }
}

//冒泡排序
void sort(int* value)
{
    int temp = 0;
    for(int i=0; i<27-1; i++)
    {
        for(int j=0; j<27-1-i; j++)
        {
            if(value[j] < value[j+1])
            {
                temp = value[j];
                value[j] = value[j+1];
                value[j+1] = temp;
            }
        }
    }
}

int main ()
{
    int max;
    int min;
    int n = 0;
    char wordstr[101];
    int wordvalue[1+26]={0};
    gets(wordstr);
    countnumber(wordstr,wordvalue);
    //输出统计过字符串
    // for(int i=0;i<27;i++)
    // {
    //     printf("%d",wordvalue[i]);
    // }
    // printf("\n");    
    sort(wordvalue);
    max = wordvalue[0];
    min = wordvalue[0];
    while(wordvalue[n])
    {
        min = wordvalue[n];
        n++;
    }
    // 输出排序后的数组
    // for(int i=0;i<27;i++)
    // {
    //     printf("%d",wordvalue[i]);
    // }
    if(isPrime(max-min))
    {
        printf("Lucky Word\n");
        printf("%d",max-min);
    }
    else
    {
        printf("No Answer");
    }
}

版权声明:本文为Soulermate原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。