题意:
现在给你一个字符串,你可以将它看成是a^n的形式,比如字符串”abababab”,可以认为是”abab”^2, 也可以是”abababab”^1,还可以是”ab”^4。求出n最大为多少。
思路:
直接可以发现是为因数才能分解,所以就找出因数,从大到小枚举一波就好了,遇到可以的就直接退出。
程序:
const
maxn=10000;
var
s:ansistring;
i,j,n,m,ans,p:longint;
a:array [1..maxn] of longint;
function cheak(x:longint):boolean;
var
k,i,j:longint;
begin
i:=1;
k:=m div x;
while (s[i]=s[i+k]) and (i+k<m) do inc(i);
if s[i]=s[i+k] then cheak:=true
else cheak:=false;
end;
procedure sort(l,r:longint);
var
i,j,mid,midx:longint;
begin
if l>r then exit;
mid:=(l+r) div 2;
midx:=a[(l+r) div 2];
if cheak(midx) then
begin
if midx>ans then ans:=midx;
sort(mid+1,r);
end
else sort(l,mid-1);
end;
begin
readln(n);
for i:=1 to n do
begin
readln(s);
m:=length(s);
p:=0;
ans:=1;
for j:=2 to m do
if m mod j=0 then
begin
inc(p);
a[p]:=j;
end;
for j:=p downto 1 do
if cheak(a[j]) then
begin
ans:=a[j];
break;
end;
writeln(ans);
end;
end.