Pagini recente » Cod sursa (job #1861419) | Cod sursa (job #77704) | Cod sursa (job #810790) | Cod sursa (job #2096086) | Cod sursa (job #529227)
Cod sursa(job #529227)
#include<stdio.h>
#include<string.h>
#define Nmax 1000010
char s[Nmax];
int pi[Nmax],T,sol,n;
void prefix()
{
int i , k = 0 ;
pi[1] = 0 ;
for( i = 2 ; i <= n ; i++ )
{
while( k > 0 && s[k+1] != s[i] )
k = pi[k];
if( s[k+1] == s[i] )
k++ ;
pi[i] = k ;
if( k && ( i % ( i - k ) == 0 ) )
sol = i ;
}
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d\n",&T);
for( ; T ; --T )
{
scanf("%s\n",s+1);
n = strlen(s+1);
sol = 0;
prefix();
printf("%d\n",sol);
}
return 0;
}