Pagini recente » Cod sursa (job #484243) | Cod sursa (job #2559760) | Cod sursa (job #575586) | Cod sursa (job #3125275) | Cod sursa (job #342311)
Cod sursa(job #342311)
#include<stdio.h>
#include<string.h>
int n,m,nr;
int p[1<<20];
char v[1<<20];
void prefix()
{
int i,q=0,l=0;
p[1]=0;
for(i=2;i<=n;i++)
{
while(q && v[q+1]!=v[i])
q=p[q];
if(v[q+1]==v[i])
q++;
p[i]=q;
if(q && i%(i-q)==0)
l=i;
}
printf("%d\n",l);
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
int t;
scanf("%d\n",&t);
while(t--)
{
gets(v+1);
n=strlen(v+1);
prefix();
}
return 0;
}