(File IO): input:word.in output:word.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto ProblemSet
题目描述
笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设
m
a
x
n
maxn
maxn是单词中出现次数最多的字母的出现次数,
m
i
n
n
minn
minn是单词中出现次数最少的字母的出现次数,如果
m
a
x
n
−
m
i
n
n
maxn-minn
maxn−minn是一个质数,那么笨小猴就认为这是个
L
u
c
k
y
W
o
r
d
Lucky Word
LuckyWord,这样的单词很可能就是正确的答案。
输入
输入文件
w
o
r
d
.
i
n
word.in
word.in只有一行,是一个单词,其中只可能出现小写字母,并且长度小于
100
100
100。
输出
输出文件
w
o
r
d
.
o
u
t
word.out
word.out共两行,第一行是一个字符串,假设输入的的单词是
L
u
c
k
y
W
o
r
d
Lucky Word
LuckyWord,那么输出
“
L
u
c
k
y
W
o
r
d
”
“Lucky Word”
“LuckyWord”,否则输出
“
N
o
A
n
s
w
e
r
”
“No Answer”
“NoAnswer”;
第二行是一个整数,如果输入单词是
L
u
c
k
y
W
o
r
d
Lucky Word
LuckyWord,输出
m
a
x
n
−
m
i
n
n
maxn-minn
maxn−minn的值,否则输出
0
0
0。
样例输入
【输入样例1】
error
【输入样例2】
olympic
样例输出
【输出样例1】
Lucky Word
2
【输出样例1解释】
单词
e
r
r
o
r
error
error中出现最多的字母r出现了
3
3
3次,出现次数最少的字母出现了
1
1
1次,
3
−
1
=
2
3-1=2
3−1=2,
2
2
2是质数。
【输出样例2】
No Answer
0
【输出样例2解释】
单词
o
l
y
m
p
i
c
olympic
olympic中出现最多的字母出现了
1
1
1次,出现次数最少的字母出现了
1
1
1次,
1
−
1
=
0
1-1=0
1−1=0,
0
0
0不是质数。
数据范围限制
解题思路
暴力模拟。。
统计每个字母出现的次数,算出
m
a
x
n
maxn
maxn和
m
i
n
n
minn
minn,然后判断一下
m
a
x
n
−
m
i
n
n
maxn-minn
maxn−minn是不是质数就行啦。
代码
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<map>
using namespace std;
int maxn,minn,l[30];
string s;
bool check(int x)
{
if(x<2)
return 0;
for(int i=2;i*i<=x;i++)
if(x%i==0)
return 0;
return 1;
}
int main(){
freopen("word.in","r",stdin);
freopen("word.out","w",stdout);
cin>>s;
for(int i=0;i<s.size();i++)
l[s[i]-'a']++;
minn=110;
for(int i=0;i<26;i++)
{
if(l[i]==0)
continue;
if(l[i]>maxn)
maxn=l[i];
if(l[i]<minn)
minn=l[i];
}
if(check(maxn-minn))
printf("Lucky Word\n%d",maxn-minn);
else
printf("No Answer\n0");
}