現在給你乙個字串,你可以將它看成是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+kdo 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);
endelse 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 downto1do
if cheak(a[j]) then
begin
ans:=a[j];
break;
end;
writeln(ans);
end;
end.
重複字串
題目描述 給定兩個字串a和b,我們可以定義一些操作 a b為將字串a和字串b連線起來,比如a aoe b jkw 那麼a b aoejkw 進一步,我們可以有指數操作,a 0 a 1 a,a 2 a a,a n a a n 1 a a a n個a 現在給你乙個字串,你可以將它看成是a n的形式,比如...
刪除重複字串
oj.h ifndef oj head define oj head int getresult const char input,char output endif oj.cpp include oj.h description 給定乙個字串,將字串中所有和前面重複多餘的字元刪除,其餘字元保留,輸...
去除重複字串
建立新集合將重複元素去掉 1,明確返回值型別,返回arraylist 2,明確引數列表arraylist 分析 1,建立新集合 2,根據傳入的集合 老集合 獲取迭代器 3,遍歷老集合 4,通過新集合判斷是否包含老集合中的元素,如果包含就不新增,如果不包含就新增 public static array...