Cod sursa(job #219158)

Utilizator RobybrasovRobert Hangu Robybrasov Data 5 noiembrie 2008 21:08:08
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <cstdio>
#include <cstring>
#define N 1000100

char s[N];
int n,p[N],i,t,max;

void prefix()
{
    int i,k=0;
    for (i=2; i<=n; i++)
    {
        while (k && s[k+1]!=s[i]) k=p[k];
        if (s[k+1]==s[i]) k++;
        p[i]=k;
        if (k && (i%(i-k)==0))
            if (i>max) max=i;
    }
}

int main()
{
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);
    scanf("%d\n",&t);
    for (; t; t--)
    {
        fgets(s+1,N,stdin);
        n=strlen(s+1)-1;
        max=0;
        prefix();
        printf("%d\n",max);
    }

    return 0;
}