Pagini recente » Cod sursa (job #2643342) | Cod sursa (job #2919303) | Cod sursa (job #1948560) | Cod sursa (job #2450013) | Cod sursa (job #177917)
Cod sursa(job #177917)
var a : array[1..1000000] of char;
pi : array[1..1000000] of integer;
q,t,i,j,k,max,n : longint;
f,g : text;
procedure kmp;
begin
k:=0;pi[1]:=0;
for i:=2 to n do
begin
while (k>0) and(a[k+1]<>a[i]) do
k:=pi[k];
if a[k+1]=a[i] then inc(k);
pi[i]:=k;
if i-pi[i]>0 then
if (i mod(i-pi[i])=0)and(i>max)and(pi[i]>0)then max:=i;
end;
end;
begin
assign(f,'prefix.in');reset(f);
assign(g,'prefix.out');rewrite(g);
readln(f,t);
for q:=1 to t do
begin
n:=0; max:=0;
while not eoln(f) do
begin
inc(n);
read(f,a[n]);
end;
readln(f);
kmp;
{ for k:=1 to n do
if k-pi[k]>0 then
if (k mod(k-pi[k])=0)and(k>max)and(pi[k]>0)then max:=k;
}
writeln(g,max);
end;
close(g);
end.