Pagini recente » Cod sursa (job #1999665) | Cod sursa (job #1077732) | Cod sursa (job #2967741) | Cod sursa (job #3187557) | Cod sursa (job #1005013)
#include<stdio.h>
#include<string.h>
char v[1000003];
int pi[1000003];
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
int t,i,n,aux=0;
scanf("%d\n",&t);
while(t--)
{
gets(v+1);
n=strlen(v+1);
memset(pi,0,sizeof(pi));
for(i=2;i<=n;++i)
{
while(v[aux+1]!=v[i]&&aux)
aux=pi[aux];
if(v[aux+1]==v[i])
++aux;
pi[i]=aux;
}
for(i=n;i>1;--i)
if(i-pi[i]>0)
if(pi[i] && i%(i-pi[i])==0)
break;
if(i==1)
i=0;
printf("%d\n",i);
}
return 0;
}