Cod sursa(job #76118)

Utilizator sealTudose Vlad seal Data 8 august 2007 02:42:20
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<stdio.h>
#define Nm 1000002
char S[Nm];
int Pi[Nm];

int solve()
{
    int i,k,ans=0;

    Pi[1]=k=0;
    for(i=2;S[i];++i)
    {
        while(k && S[i]!=S[k+1])
            k=Pi[k];
        if(S[i]==S[k+1])
            ++k;
        Pi[i]=k;
        if(Pi[i] && i%(i-Pi[i])==0)
            ans=i;
    }

    return ans;
}

int main()
{
    int t;

    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);

    scanf("%d\n",&t);
    while(t--)
    {
        gets(S+1);
        printf("%d\n",solve());
    }

    return 0;
}