Cod sursa(job #195597)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 19 iunie 2008 22:17:35
Problema Prefix Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <stdio.h>

#include <string.h>

#define N_Max 1000000

int n,t,M,i;
long sol;

int PI[N_Max];

char SUBSIR[N_Max];

void functie_prefix()

{int q,k,sol=0;

M=strlen(SUBSIR+1);
k=0;
PI[1]=0;
for (q=2;q<=M;q++)
    {
    while (k>0 && SUBSIR[k+1]!=SUBSIR[q])
	  k=PI[k];
    if (SUBSIR[k+1]==SUBSIR[q]) k++;

    PI[q]=k;

    if (PI[q]>0 && q%(q-PI[q])==0) sol=q;
}

}

int main()

{

freopen("prefix.in","rt",stdin);
freopen("prefix.out","wt",stdout);

scanf("%d", &t);

while (t)
    {
    scanf("%s",SUBSIR+1);
    functie_prefix();
    printf("%ld\n", sol);
    --t;
    }

return 0;
}