Pagini recente » Cod sursa (job #2113052) | Cod sursa (job #2341189) | Cod sursa (job #1933609) | Cod sursa (job #1688558) | Cod sursa (job #392274)
Cod sursa(job #392274)
#include<stdio.h>
#include<string.h>
#define Nmax 1000005
char A[Nmax];
int urm[Nmax],n,t;
int prefix()
{int q=0,i,sol=0;
for(i=2,urm[1]=0;i<=n;i++)
{ while(A[q+1]!=A[i] && q)
q=urm[q];
if(A[q+1]==A[i])
q++;
urm[i]=q;
if(q && i%(i-q)==0)
sol=i;
}
return sol;
}
int main()
{freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
char c;
scanf("%d",&t);
int i,j;
for(i=1;i<=t;i++)
{
scanf("%s",A);
n=strlen(A);
for(j=n;j;j--)
A[j]=A[j-1];
A[0]=' ';
printf("%d\n",prefix());
}
fclose(stdin);
fclose(stdout);
return 0;
}