NYOJ---题目62笨小熊

来源:互联网 发布:初中毕业学编程 编辑:程序博客网 时间:2024/04/29 14:22
描述

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

输入
第一行数据N(0<N<100)表示测试数据组数。
每组测试数据输入只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。
输出
每组测试数据输出共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;
第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0
样例输入
2errorolympic
样例输出
Lucky Word2No Answer0
来源
NOIP2008
上传者

hzyqazasdf

#include<iostream>#include<string.h>#include<stdio.h>#include<algorithm>#define N 100using namespace std;bool prime[N];void prim(bool prime[]){    prime[0]=false;    prime[1]=false;    for(int i=2;i<100;i++)    {        if(!prime[i])            continue;        for(int j=i*i;j<100;j+=i)        {            prime[j]=false;        }    }}int main(){    int n,m;    int num[28];    int b[28];    char a[120];    cin>>n;    while(n--)    {       cin>>a;       memset(num,0,sizeof(num));       memset(prime,true,sizeof(prime));       int len=strlen(a);       int t=0;       prim(prime);       for(int i=0;i<len;i++)       {           t=a[i]-'a';           num[t]++;       }       int count=0;       for(int i=0;i<28;i++)       {           if(num[i])           {               b[count++]=num[i];           }       }       sort(b,b+count);       m=b[count-1]-b[0];       if(prime[m])       {            printf("Lucky Word\n");            printf("%d\n",m);       }       else       {           printf("No Answer\n");           printf("0\n");       }    }}


0 0
原创粉丝点击