Cod sursa(job #468770)

Utilizator S7012MYPetru Trimbitas S7012MY Data 4 iulie 2010 22:45:13
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.5 kb
#include <cstdio>
#include <cstring>
#define DN 1000001

void p() {
    int pi[DN];
    char sir[DN];
    int k=0,q,lg,lmax=0;
    scanf("%s", sir+1);
    lg=strlen(sir+1);
    for(q=2; q<=lg; q++) {
        for( ;k&&sir[k+1]!=sir[q]; k=pi[k]);
        if(sir[k+1]==sir[q]) ++k;
        pi[q]=k;
        if(k&&!(q%(q-k))) lmax=q;
    }
    printf("%d\n",lmax);
}

int main()
{
    int t;
	freopen("prefix.in","r",stdin);
	freopen("prefix.out","w",stdout);
	for(scanf("%d",&t ); t; --t) p();
	return 0;
}