Cod sursa(job #47643)

Utilizator andrewgPestele cel Mare andrewg Data 3 aprilie 2007 21:21:53
Problema Prefix Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.93 kb
const maxn = 1000001;

var fi,fo:text;
    m,n,i,j,k,q,sol:longint;
    c:array[1..maxn]of char;
    pi:array[1..maxn]of longint;

procedure writedata;
begin
   writeln(fo,sol);
end;

procedure solve;
begin
   pi[1]:=0;
   k:=0;
   sol:=0;
   for q:=2 to j do
   begin
      while (k>0) and (c[k+1]<>c[q]) do k:=pi[k];
      if c[k+1]=c[q] then k:=k+1;
      pi[q]:=k;
      if pi[q]>0 then
      begin
         if (q>sol) and (q mod (q-pi[q])=0) then
         begin
            sol:=q;
         end;
      end;
   end;
end;

procedure readdata;
begin
   assign(fi,'prefix.in');
   reset(fi);
   assign(fo,'prefix.out');
   rewrite(fo);
   readln(fi,m);
   for i:=1 to m do
   begin
      j:=0;
      while not eoln(fi) do
      begin
         inc(j);
         read(fi,c[j]);
      end;
      readln(fi);
      solve;
      writedata;
   end;
   close(fo);
   close(fi);
end;

begin
   readdata;
end.