Cod sursa(job #423735)

Utilizator andrey932Andrei andrey932 Data 24 martie 2010 11:00:09
Problema Prefix Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.96 kb
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.