Mai intai trebuie sa te autentifici.

Cod sursa(job #1314036)

Utilizator serban_ioan97Ciofu Serban serban_ioan97 Data 11 ianuarie 2015 14:31:18
Problema Prefix Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <cstdio>
#include <cstring>
#define max_dim 1000002

using namespace std;

char s[max_dim];
int nxt[max_dim];

int main()
{
    int n;
    freopen("prefix.in", "rt", stdin);
    freopen("prefix.out", "wt", stdout);

    scanf("%d\n", &n);

    while(n--)
    {
        gets(s+1);
        int answer=0, k;
        nxt[1]=k=0;

        for(int i=2; s[i]; ++i)
        {
            while(k && s[i]!=s[k+1])
            k=nxt[k];

            if(s[i]==s[k+1]) ++k;
            nxt[i]=k;
        }

        for(int i=strlen(s); i>0; ++i)
            if(nxt[i] && i%(i-nxt[i])==0) {answer=i; break;}

        printf("%d\n", answer);
    }
    return 0;
}