NYOJ 题目62 笨小熊
2017-07-29 14:07
295 查看
笨小熊
时间限制: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
样例输入
2 error olympic
样例输出
Lucky Word 2 No Answer 0
01.
#include <stdio.h>
02.
#include <string.h>
03.
int
main()
04.
{
05.
int
f(
int
a,
int
b);
06.
int
N;
07.
char
b[100];
08.
scanf
(
"%d"
,&N);
09.
while
(N--)
10.
{
11.
int
a[26]={0},i,max=0,min=100;
12.
scanf
(
"%s"
,b);
13.
for
(i=0;i<
strlen
(b);i++)
14.
a[b[i]-
'a'
]++;
15.
for
(i=0;i<26;i++)
16.
{
17.
if
(a[i]!=0)
18.
{
19.
if
(max<a[i])
20.
max=a[i];
21.
if
(a[i]<min)
22.
min=a[i];
23.
}
24.
else
continue
;
25.
}
26.
if
(f(max,min)==1)
27.
printf
(
"Lucky Word\n%d\n"
,max-min);
28.
else
29.
printf
(
"No Answer\n0\n"
);
30.
}
31.
return
0;
32.
}
33.
int
f(
int
a,
int
b)
34.
{
35.
int
t,i;
36.
t=a-b;
37.
if
(t==0||t==1)
38.
return
0;
39.
else
if
(t==2)
return
1;
40.
else
41.
{
42.
for
(i=2;i<t;i++)
43.
if
(t%i==0)
44.
return
0;
45.
return
1;
46.
}
47.
}