Pagini recente » Cod sursa (job #1980373) | Cod sursa (job #656796) | Cod sursa (job #600047) | Cod sursa (job #1831136) | Cod sursa (job #335322)
Cod sursa(job #335322)
#include <stdio.h>
#include <string.h>
#define DIM 1000005
char a[DIM];
int pi[DIM];
int n,t,nrt;
void clean ()
{
int i;
for (i=1; i<=n; ++i)
pi[i]=0;
}
void kmp_smen (char a[DIM])
{
int i,k;
for (k=0, i=2; i<=n; ++i)
{
for ( ; a[k+1]!=a[i] && k>0; )
k=pi[k];
if (a[k+1]==a[i])
++k;
pi[i]=k;
if (i%(i-k)==0 && k>0)
nrt=i;
}
}
int main ()
{
freopen ("prefix.in","r",stdin);
freopen ("prefix.out","w",stdout);
int i;
scanf ("%d\n",&t);
for (i=1; i<=t; ++i)
{
clean ();
gets (a+1);
n=strlen (a+1);
kmp_smen (a);
printf ("%d\n",nrt);
}
return 0;
}