nyoj_62 笨小熊

来源:互联网 发布:如何过户域名 编辑:程序博客网 时间:2024/05/04 05:02

笨小熊

时间限制:2000 ms  |  内存限制:65535 KB
难度:2
描述

笨小熊的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 
这种方法的具体描述如下:假设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

分析:

用一个数组map[26]来存储每个字母出现的次数,读完输入数据后,遍历此数组,统计maxn、minn,然后判断素数后输出(注意输出单词的大小写和空格,另外No Answer时输出的是0而非maxn-minn)。

代码:

#include<cstdio>
#include<cstring>
int fun(int n)
{
if(n==0||n==1)
return 0;
for(int i=2;i<n;i++)
{
if(n%i==0)
return 0;
}
return n;
}
int map[26];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
memset(map,0,sizeof(map));
char s[105];
scanf("%s",s);
int maxn=0,minn=105;
for(int i=0;i<strlen(s);i++)
map[s[i]-'a']++;
for(int i=0;i<26;i++)
{
if(map[i]>maxn)
maxn=map[i];
if(map[i]&&map[i]<minn)
minn=map[i];
}
int res=fun(maxn-minn);
if(res)
printf("Lucky Word\n%d\n",res);
else
printf("No Answer\n%d\n",res);
}
return 0;
}

0 0
原创粉丝点击