Cod sursa(job #857598)

Utilizator Marius96Marius Gavrilescu Marius96 Data 18 ianuarie 2013 00:09:34
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.46 kb
#include<cstdio>
#include<cstring>
char s[1000005];

int p[1000005];

int main (void)
{
	freopen ("prefix.in","r",stdin);
#ifdef INFOARENA
	freopen ("prefix.out","w",stdout);
#endif

	int t;
	scanf ("%d ",&t);
	while(t--){
		gets (s+1);
		int n=strlen (s+1);
		p[1]=0;
		int x=0;
		int r=0;
		for(int i=2;i<=n;i++){
			while(x>0&&s[x+1]!=s[i])
				x=p[x];
			if(s[x+1]==s[i])
				x++;
			p[i]=x;
			if(p[i]&&i%(i-p[i])==0)
				r=i;
		}

		printf ("%d\n",r);
	}

	return 0;
}