Pagini recente » Cod sursa (job #2142456) | Cod sursa (job #1630045) | Cod sursa (job #2293889) | Cod sursa (job #2068000) | Cod sursa (job #1517831)
#include<cstdio>
#include<cstring>
using namespace std;
char s[1000010];
int prefix[1000010];
int main(){
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
int t,q,n,i,j;
scanf("%d\n",&t);
for(q=1;q<=t;q++){
scanf("%s",s+1);
n=strlen(s+1);
i=0;
for(j=2;j<=n;j++){
while(i>0&&s[i+1]!=s[j])
i=prefix[i];
if(s[i+1]==s[j])
i++;
prefix[j]=i;
}
for(j=n;j>=1;j--)
if(prefix[j]>0&&j%(j-prefix[j])==0)
break;
printf("%d\n",j);
}
return 0;
}