重复字符串(powerstr)

来源:互联网 发布:js遍历jsong数组赋值 编辑:程序博客网 时间:2024/06/06 06:59

题意:

现在给你一个字符串,你可以将它看成是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.
0 0
原创粉丝点击