Cod sursa(job #491074)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 9 octombrie 2010 16:32:51
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <stdio.h>
#define LMAX 1000005
char A[LMAX];
int t,l,pi[LMAX],sol;
inline int cif(char x)
{
	return x>='a' && x<='z';
}
void prefix()
{
	int i,q=0;
	for (i=2; i<=l; i++)
	{
		while (A[q+1]!=A[i] && q>0)
			q=pi[q];
		if (A[q+1]==A[i]) q++;
		pi[i]=q;
		if (i % (i-q)==0 && q>0)
			sol=i;
	}
}
int main()
{
	freopen("prefix.in","r",stdin);
	freopen("prefix.out","w",stdout);
	scanf("%d\n",&t);
	while (t--)
	{
		fgets(A+1,LMAX,stdin);
		l=0; sol=0;
		while (cif(A[l+1])) l++;
		prefix();
		printf("%d\n",sol);
	}
	return 0;
}