Cod sursa(job #190382)

Utilizator swift90Ionut Bogdanescu swift90 Data 21 mai 2008 20:11:21
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include<stdio.h>
#include<string.h>
#define lg 1000010
int n,pr[lg],rez;
char s[lg];
void prefix(){
	int i,k;
	k=0;
	for(i=2;i<=n;++i){
		while(k>0 && s[k+1]!=s[i])
			k=pr[k];
		if(s[k+1]==s[i])
			++k;
		pr[i]=k;
		if(pr[i]){
			if(pr[i]%(i-pr[i])==0){
				rez=i;
			}
		}
	}
}
int main(){
	freopen("prefix.in","r",stdin);
	freopen("prefix.out","w",stdout);
	int t;
	scanf("%d",&t);
	while(t){
		scanf("%s",s+1);
		n=strlen(s+1);
		rez=0;
		prefix();
		printf("%d\n",rez);
		--t;
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}