SSL 1587
洛谷 P1125 笨小猴
题目描述
笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。
分析
略微不模拟
先立一个26空的数组(储存每个字母在单词中出现的数量)
经过一番读入以后,再来一重循环,将最大(ma)最小(mi)分别统计起来,最后判断相减值是否为素数。
直接依照题意做
var
s:string;
i,ma,mi:longint;
a:array[1..26]of longint;
function prime(n:longint):boolean;
var
i:longint;
begin
prime:=false;
if n>1 then prime:=true;
for i:=2 to trunc(sqrt(n)) do
if n mod i=0 then begin prime:=false; break; end;
end;
begin
readln(s);
for i:=1 to length(s) do
begin
if s[i]<='Z' then
inc(a[ord(s[i])-64]);
if s[i]>='a' then
inc(a[ord(s[i])-96]);
end;
mi:=maxlongint;
for i:=1 to 26 do
begin
if ma<a[i] then ma:=a[i];
if (mi>a[i])and(a[i]<>0) then mi:=a[i];
end;
if prime(ma-mi) then begin writeln('Lucky Word');write(ma-mi); end
else begin writeln('No Answer');write(0); end;
end.