Pagini recente » Cod sursa (job #807860) | Cod sursa (job #335362) | Cod sursa (job #2532348) | Cod sursa (job #184627) | Cod sursa (job #232983)
Cod sursa(job #232983)
#include<stdio.h>
#include<string.h>
long t,i,k,m,a[1000005],l,j,x;
char s[1000005];
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%ld",&t);
for(i=1;i<=t;++i)
{scanf("\n");
gets(s);
k=-1;
m=0;
a[0]=-1;
l=strlen(s);
for(j=1;j<l;++j)
{while(k>=0&&s[k+1]!=s[j])k=a[k];
if(s[k+1]==s[j])++k;a[j]=k;
if(a[j]>=0){x=j-a[j];
if((j+1)%x==0)m=j+1;}
}
printf("%ld\n",m);
}
return 0;
}