Cod sursa(job #203322)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 15 august 2008 11:47:40
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <stdio.h>
#include <string.h>
#define N 1000005
char s[N];int n,p[N];
void pii(){
	int i,k=0,max=0;
	p[1]=0;
	for(i=2;i<=n;i++){
		while(k>0 && s[k+1]!=s[i])
			k=p[k];
		if(s[k+1]==s[i]) k++;
		p[i]=k;
		if(k)  
			if(k%(i-k)==0)  
				max=i;  
	}
	printf("%d\n",max);
}
void curat(){
	for(int i=1;i<=n;i++)
		s[i]='\0';
}
int main(){
	int m;
	freopen("prefix.in","r",stdin);
	freopen("prefix.out","w",stdout);
	scanf("%d\n",&m);
	for(int i=1;i<=m;i++){
		scanf("%s\n",s+1);
		n=strlen(s+1);
		pii();
		curat();
	}
	return 0;
}