Cod sursa(job #188337)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 7 mai 2008 22:31:45
Problema Prefix Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100010
int t;
char s[MAX];
int pref[MAX],max;
void start(){
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);
    scanf("%d",&t);
}
void prefix(){
	int x=0,i;
	max=0;
	pref[1]=0;
	for(i=2;s[i];++i){
		while(x>0 && (s[x+1]^s[i])!=0)
			x=pref[x];
		if(s[i]==s[x+1])
			++x;
		pref[i]=x;
		if(pref[i]!=0){
			if(pref[i]%(i-pref[i])==0)
				max=i;
		}
	}
}
void print(){
     printf("%d\n",max);
}
void end(){
     fclose(stdin);
     fclose(stdout);
     exit(0);
}
int main(){
    start();
    while (t--){
          gets(s);
          prefix();
          print();
    }
    end();
}