Cod sursa(job #2721242)

Utilizator pielevladutPiele Vladut Stefan pielevladut Data 11 martie 2021 17:46:50
Problema Prefix Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("date.in");
ofstream fout("date.out");

int T;
char s[1001001];
int pi[1001001];

int main()
{
    fin >> T;
    fin.get();
    while(T--)
    {
        fin >> (s + 1);
        int j = 0, n = strlen(s + 1);
        int ans = 0;
        for(int i = 2; i <= n; i ++)
        {
            while(s[i] != s[j + 1] && j != 0)
            {
                j = pi[j];
            }
            if(s[i] == s[j + 1])
            {
                j++;
            }
            pi[i] = j;
        }
        for(int i = 1; i <= n; i ++)
        {
            if(pi[i] != 0 && i % (i - pi[i]) == 0)
                ans = i;
        }
        fout << ans << '\n';
    }
}