Cod sursa(job #529227)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 4 februarie 2011 16:01:03
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#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;
}