Cod sursa(job #195595)

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

#include <string.h>

#define N_Max 10000

int n,sol,t,M,i;

int PI[N_Max];

char SUBSIR[N_Max];

void functie_prefix()

{int q,k,sol=0;

M=strlen(SUBSIR+1);
k=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])
    if (PI[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("%d\n", sol);
    --t;
    }

return 0;
}