Pagini recente » Cod sursa (job #934132) | Cod sursa (job #2702139) | Cod sursa (job #2504836) | Cod sursa (job #326763) | Cod sursa (job #186342)
Cod sursa(job #186342)
{9:05}
program prefix;
const fi='prefix.in';fo='prefix.out';
var pi:array[1..1000000]of longint;
a:array[1..1000000]of char;
f,g:text;
i,j,t:longint;
function merge(leng,i:longint):boolean;
var ok:boolean;
begin
if i mod leng=0 then ok:=true
else ok:=false;
merge:=ok;
end;
function calc_pref(n:longint):longint;
var k,q,sol:longint;
i:longint;
leng:longint;
begin
fillchar(pi,sizeof(pi),0);
k:=0;
pi[1]:=0;sol:=0;leng:=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(k>0)and(merge(i-pi[i],i)) then sol:=i;
end;
calc_pref:=sol;
end;
begin
assign(f,fi);reset(f);
assign(g,fo);rewrite(g);
readln(f,T);
for i:=1 to T do begin
j:=0;
fillchar(a,sizeof(a),' ');
while not seekeoln(f) do begin
inc(j);
read(f,a[j]);
end;
readln(f);
writeln(g,calc_pref(j));
end;
close(g);
closE(f);
end.