Pagini recente » Cod sursa (job #1926228) | Cod sursa (job #2126405) | Cod sursa (job #708657) | Cod sursa (job #1529692) | Cod sursa (job #78823)
Cod sursa(job #78823)
program prefix;
const
fin='prefix.in';
fout='prefix.out';
type
sir=array[1..1000010] of char;
lsir=array[0..1000010] of longint;
var
t,i,j,n,k,q,l,x,y,it,best:longint;
f:text;
p:sir;
pi:lsir;
s:string;
begin
assign(f,fin);assign(output,fout);
reset(f);rewrite(output);
readln(f,t);
for it:=1 to t do
begin
l:=0;
while not(seekeoln(f)) do
begin
read(f,s);
for i:=l+1 to l+length(s) do
p[i]:=s[i-l];
inc(l,length(s));
end;
readln(f);
k:=0;
pi[1]:=0;
for q:=2 to l do
begin
while (k>0) and (p[k+1]<>p[q]) do
k:=pi[k];
if p[k+1]=p[q] then
inc(k);
pi[q]:=k;
end;
best:=0;
for i:=l downto 2 do
if i-pi[i]<>0 then
begin
if (pi[i]<>0) then
if (i=(i div (i-pi[i]))*(i-pi[i])) then
begin
best:=i;
break;
end;
end;
writeln(best);
end;
close(f);close(output);
end.