题意
给出一个串s,用出现最多字母的次数减出现最少字母的次数,结果为质数则输出‘Lucky Word’和结果,否则输出‘No Answer’和‘0’。
题解
纯模拟。用a记录每个字母出现的字数,然后for找出max和min,相减并判断是否质数,最后输出。
时间复杂度O(n)
代码
var
s:string;
a:array[1..26]of longint;
max,min,i,j:longint;
begin
readln(s);
for i:=1 to length(s) do
inc(a[ord(s[i])-ord('a')+1]);
min:=maxlongint;
for i:=1 to 26 do
if a[i]>max then max:=a[i] else
if (a[i]<min)and(a[i]>0) then
min:=a[i];
j:=max-min;
min:=0;
for i:=1 to j do
if j mod i=0 then
begin
inc(min);
if min>2 then break;
end;
if min=2 then
begin
writeln('Lucky Word');
writeln(j);
end else
begin
writeln('No Answer');
writeln('0');
end;
end.