Cod sursa(job #341149)

Utilizator ionutz32Ilie Ionut ionutz32 Data 17 august 2009 17:15:11
Problema Prefix Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.68 kb
var s:array[1..1000000] of char;
pi:array[1..1000000] of longint;
t,contor,k,i,m,a:longint;
f,g:text;
begin
assign(f,'prefix.in');
assign(g,'prefix.out');
reset(f);rewrite(g);
readln(f,t);
for contor:=1 to t do
    begin
    m:=0;
    while not seekeoln(f) do
          begin
          m:=m+1;
          read(f,s[m]);
          end;
    readln(f);
    pi[1]:=0;
    k:=0;a:=0;
    for i:=2 to m do
        begin
        while (k>0) and (s[k+1]<>s[i]) do
              k:=pi[k];
        if s[k+1]=s[i] then
           k:=k+1;
        pi[i]:=k;
        if (k>0) and (i mod (i-k)=0) then
           a:=i;
        end;
    writeln(g,a);
    end;
close(f);close(g);
end.