Cod sursa(job #447629)

Utilizator HoriaClementHoriaC HoriaClement Data 29 aprilie 2010 16:32:01
Problema Prefix Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.53 kb
#include <cstdio>
#include <cstring>

char s[1<<20];
int t,v[1<<20];

void citire()
{
	freopen("prefix.in","r",stdin);
	freopen("prefix.out","w",stdout);
	scanf("%d\n",&t);
}
void work()
{
	int i,k=0,r=0;
	for(int j=1;j<=t;++j)
	{
		gets(s);
		for (i=strlen(s);i>0;--i) 	
			s[i]=s[i-1];
		v[1]=0;
		for(i=2;i<=strlen(s);++i)
		{
			while (k && s[k+1]!=s[i]) 
				k=v[k];
			if (s[k+1]==s[i]) 
				++k;
			v[i]=k;
			if (k && !(i %(i-k))) 
				r=i;
		}
		printf("%d\n",r);
	}
}
int main()
{
	citire();
	work();
	return 0;
}