Cod sursa(job #195599)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 19 iunie 2008 22:23:45
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 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;

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;

}

}

int main()

{

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

scanf("%d", &t);

while (t)
    {
    sol=0;
    scanf("%s",SUBSIR+1);
    M=strlen(SUBSIR+1);
    functie_prefix();
    for (i=2;i<=M;i++)
    if (PI[i]>0 && i%(i-PI[i])==0) sol=i;
    printf("%ld\n", sol);
    --t;
    }

return 0;
}