Cod sursa(job #294794)

Utilizator EcthorIorga Dan Ecthor Data 2 aprilie 2009 19:34:07
Problema Prefix Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.64 kb
var t:integer;
	p:array[1..1000000] of char;
	fin,fout:text;
	i:integer;
	m:longint;

procedure prefix;
var q,k,max:longint;
	pre:array[1..1000000] of longint;
begin
k:=0;
pre[1]:=0;
max:=0;
for q:=2 to m do
	begin
	 while (k>0) and (p[k+1]<>p[q]) do k:=pre[k];
	 if (p[k+1]=p[q]) then inc(k);
	 pre[q]:=k;
	 if (k>0) and (q mod (q-k)=0) and (q>max) then max:=q;
	end;
writeln(fout,max);
end;
	 
begin
assign(fin,'prefix.in'); reset(fin);
assign(fout,'prefix.out'); rewrite(fout);
readln(fin,t);
for i:=1 to t do
	begin
	 fillchar(p,sizeof(p),0);
	 readln(fin,p);
	 m:=0;
	 while (ord(p[m+1])<>0) do inc(m);
	 prefix;
	end;
close(fin); close(fout);
end.