Cod sursa(job #447600)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 29 aprilie 2010 11:26:20
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <cstdio>
#include <cstring>

#define file_in "prefix.in"
#define file_out "prefix.out"

int T,pi[1010000],n;
char s[1010000];

void prefix()
{
	int i,k=0,rez=0;
	pi[1]=0;
	for(i=2;i<=n;i++)
	{
		while(k && s[k+1]!=s[i]) k=pi[k];
		if(s[k+1]==s[i]) k++;
		pi[i]=k;
		if(k && i%(i-k)==0) rez=i;
	}
	printf("%d\n",rez);
}

		

void citire()
{
	int i;
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	scanf("%d\n", &T);
	while(T--)
	{
		gets(s+1);
		n=strlen(s+1);
		prefix();
	}

}

int main()
{
	citire();
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
	
}