Cod sursa(job #1946758)

Utilizator Theodor1000Cristea Theodor Stefan Theodor1000 Data 30 martie 2017 13:53:41
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

char str[1000010];
int phi[1000010];

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

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

    for (; t; --t)
    {
        gets (str + 1);
        int n = strlen (str + 1);

        int k = 0, ma = 0;
        for (int i = 2; i <= n; ++i)
        {
            for (; k > 0 && str[k + 1] != str[i]; k = phi[k]);

            if (str[k + 1] == str[i]) phi[i] = ++k;
            if (k > 0 && i % (i - k) == 0) ma = i;
        }

        printf ("%d\n", ma);
    }

    return 0;
}