powerstr

Description
给定两个字符串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的形式,比如字符串"abababab",可以认为是"abab"^2, 也可以是"abababab"^1,还可以是"ab"^4。
现在问题是,给定的字符串,我们想让它变成a^n中的n达到最大,那么这个n最大是多少?例如:"abababab"最大的n是4。
Input
第一行,一个整数m,表示有m个字符串。
接下来m行每行输入一个只含小写字母的字符串。
Output
输出m行,对于每行输出相应字符串的最大n。
Sample Input
3
abcde
aaaaaa
abababab
Sample Output
1
6
4
Data Constraint
30%的数据:字符串的长度≤1000;
100%的数据:字符串的长度≤1000000, m≤10,字符串内只含小写字母。
var
        a,b,c:longint;
        s,u,s1:ansistring;
        t:char;
        p:boolean;
function pd:boolean;
var
        i:longint;
        t,e:ansistring;
begin
        t:=copy(s1,1,b-1);
        for i:=1 to (length(s)div(b-1)) do
        begin
                e:=copy(s1,(b-1)*(i-1)+1,b-1);
                if e<>t then
                        exit(false);
        end;
        exit(true);
end;
begin
        //assign(input,'1.in');reset(input);
        readln(a);
        for c:=1 to a do
        begin
                readln(s);
                t:=s[1];
                p:=true;
                for b:=2 to length(s) do
                begin
                        if (length(s) mod (b-1)=0)and(s[b]=t) then
                        begin
                                s1:=s;
                                if pd=true then
                                begin
                                        writeln(length(s)div(b-1));
                                        p:=false;
                                        break;
                                end;
                        end;
                        {if b=((length(s)+1)div 2) then
                        begin
                                writeln(1);
                                break;
                        end; }
                end;
                if p=true then
                        writeln(1);
        end;
        //close(input);
end.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值