Cod sursa(job #370917)

Utilizator adelinasAdelina Spataru adelinas Data 2 decembrie 2009 19:24:11
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.48 kb
#include <stdio.h>
#define NMAX 1000005
char s[NMAX];
int pi[NMAX];
int prefix(){
	int k = 0, sol = 0;
	for(int i = 2; s[i]; ++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)
			sol = i;
	}
	return sol;
}
int main(){
	freopen("prefix.in", "r", stdin);
	freopen("prefix.out", "w", stdout);
	int t;
	scanf("%d\n", &t);
	for(;t ; --t){
		scanf("%s", s+1);
		printf("%d\n", prefix());
	}
	return 0;
}