Pagini recente » Cod sursa (job #2714374) | Cod sursa (job #2477587) | Cod sursa (job #2642471) | Cod sursa (job #1821266) | Cod sursa (job #423735)
Cod sursa(job #423735)
var t,te:text;
i,j,teste,max:longint;
s:ansistring;
k:array[0..1000001] of longint;
procedure index_kmp(s:ansistring);
var i,j,m:longint;
begin
m:=length(s);
k[0]:=0; k[1]:=0;
for i:=2 to m do
begin
j:=k[i-1];
while s[j+1]<>s[i] do
begin
if j=0 then break;
j:=k[j];
end;
if s[j+1]=s[i] then
begin
j:=j+1;
end else j:=0;
k[i]:=j;
// j:=i;
// while (k[j]*2>=j) and (k[j]>0) and (i mod k[j]<>0) do j:=k[j];
if j>0 then
if (i mod (i-j))=0 then
begin
max:=i;
end;
end;
end;
begin
assign(t,'prefix.in'); reset(t);
assign(te,'prefix.out'); rewrite(te);
readln(t,teste);
for i:=1 to teste do
begin
max:=0;
readln(t,s);
index_kmp(s);
// for j:=1 to length(s) do writeln(j,'->',k[j]); writeln; writeln; writeln; readln;
writeln(te,max);
// readln;
end;
close(t); close(te);
end.