Cod sursa(job #342311)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 21 august 2009 12:16:13
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.48 kb
#include<stdio.h>
#include<string.h>
int n,m,nr;
int p[1<<20];
char v[1<<20];

void prefix()
{
	int i,q=0,l=0;
	p[1]=0;
	for(i=2;i<=n;i++)
	{
		while(q && v[q+1]!=v[i])
			q=p[q];
		if(v[q+1]==v[i])
			q++;
		p[i]=q;
		if(q && i%(i-q)==0)
			l=i;
	}
	printf("%d\n",l);
}

int main()
{
	freopen("prefix.in","r",stdin);
	freopen("prefix.out","w",stdout);
	int t;
	scanf("%d\n",&t);
	while(t--)
	{
		gets(v+1);
		n=strlen(v+1);
		prefix();
	}
	return 0;
}