Cod sursa(job #953945)

Utilizator gbi250Gabriela Moldovan gbi250 Data 27 mai 2013 20:48:34
Problema Prefix Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <cstdio>
#include <cstring>
#define size 1000001
using namespace std;
char s[size];
int n, i, m, j, x, pi[size], nr;
int main()
{
    freopen("prefix.in", "r", stdin);
    freopen("prefix.out", "w", stdout);
    scanf("%d", &n);
    for(i=1;i<=n;i++)
    {
        scanf("%s", s+1);
        m=strlen(s+1);
        x=0; pi[1]=0;
        for(j=2;j<=m;j++)
        {
            while(s[j]!=s[x+1]&&x>0)
                x=pi[x];
            if(s[j]==s[x+1])
                x++;
            pi[j]=x;
            if(x&&(x%(j-x)==0))
                nr=j;
        }
        printf("%d\n", nr);
    }
    return 0;
}