Pagini recente » Cod sursa (job #2360237) | Cod sursa (job #1078146) | Cod sursa (job #2643829) | Cod sursa (job #1078162) | Cod sursa (job #190382)
Cod sursa(job #190382)
#include<stdio.h>
#include<string.h>
#define lg 1000010
int n,pr[lg],rez;
char s[lg];
void prefix(){
int i,k;
k=0;
for(i=2;i<=n;++i){
while(k>0 && s[k+1]!=s[i])
k=pr[k];
if(s[k+1]==s[i])
++k;
pr[i]=k;
if(pr[i]){
if(pr[i]%(i-pr[i])==0){
rez=i;
}
}
}
}
int main(){
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
int t;
scanf("%d",&t);
while(t){
scanf("%s",s+1);
n=strlen(s+1);
rez=0;
prefix();
printf("%d\n",rez);
--t;
}
fclose(stdin);
fclose(stdout);
return 0;
}