Cod sursa(job #338348)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 5 august 2009 16:03:19
Problema Prefix Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<stdio.h>
#include<string.h>
#define Nmax 1000005

int n,i,rez,t;
char s[Nmax];
int pi[Nmax];

void prefix(){
	int i,k=0;
   pi[1]=0;
   for(i=2;i<=n;++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) ) rez=i;
   }
}

int main(){
	freopen("prefix.in","r",stdin);
   freopen("prefix.out","w",stdout);
   for(scanf("%d\n",&t); t; --t){
	   gets(s+1);
   	for(n=1; s[n]; n++);
   	n--;

   	prefix();

   	//for(i=1;i<=n;++i) printf("%d ",pi[i]);
   	printf("%d\n",rez);
   }
   fclose(stdin); fclose(stdout);
   return 0;
}