Cod sursa(job #218386)

Utilizator mircea_infoSuciu Mircea-Gabriel mircea_info Data 1 noiembrie 2008 19:23:37
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <cstdio>
#include <cstring>
#define MAXIMUS 1000002

using namespace std;

char s[MAXIMUS];
int max,l,k,poz[MAXIMUS],n;

void pref()
{
    for(int i=2;i<=l;i++)
    {
        while(k && s[k+1]!=s[i])
            k=poz[k];
        if(s[k+1]==s[i])
            k++;
        poz[i]=k;
        if(k&&(i%(i-k)==0))
            max=i;
    }
}

int main()
{
    freopen("prefix.in","r",stdin);
    freopen("prefix.out","w",stdout);
    scanf("%d\n",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%s",s+1);
        l=strlen(s+1);
        max=0;
        k=0;
        pref();
        printf("%d\n",max);
    }
}