Cod sursa(job #78828)

Utilizator gurneySachelarie Bogdan gurney Data 19 august 2007 21:06:40
Problema Prefix Scor 10
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.1 kb
program prefix;
  const
    fin='prefix.in';
    fout='prefix.out';
type
  nr=1..100100;
  sir=array[1..1000010] of char;
  lsir=array[0..1000010] of nr;
var
  t,i,j,n,k,q,l,x,y,it,best:nr;
  f:text;
  p:sir;
  pi:lsir;

begin
  assign(f,fin);assign(output,fout);
    reset(f);rewrite(output);
    readln(f,t);
    for it:=1 to t do
      begin
        l:=1000000;
        readln(f,p);
        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;
            if p[q]<'!' then
              begin
                l:=q-1;
                break;
              end;
          end;
        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(output);
end.