Cod sursa(job #733330)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 11 aprilie 2012 20:57:07
Problema Prefix Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include<stdio.h>
#include<string.h>
#define dim 1000010

char s[dim];
int p[dim],T,maxu,n;


void prefix(){
	int i ,k=0 ;
	
	p[1]=0 ;
	maxu=0;
	for( i = 2 ; s[i] ; i++ ){
		while( k > 0 && s[k+1] != s[i] )
			k = p[k];
		
		if( s[k+1] == s[i] )
			k++ ;
		
		p[i]=k ;
		
		if( k && ( i % ( i - k )== 0) ) 
			maxu=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);
		maxu=0; 
		prefix();
		
		printf("%d\n",maxu);
	}
	
	return 0;
}