Cod sursa(job #3321103)

Utilizator brianabucur11Briana Bucur brianabucur11 Data 8 noiembrie 2025 10:59:38
Problema Prefix Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;

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

const int nmax = 1e6 + 5;

int lps[nmax];

void reset (int n)
{
    for (int i = 0; i < n; i++)
        lps[i] = 0;
}

int solve (string s)
{
    int n = s.size();
    reset(n);
    int k = 0;
    for (int i = 1; i < n; i++)
    {
        while (k != 0 && s[i] != s[k])
            k = lps[k-1];
        if (s[i] == s[k])
            k++;
        lps[i] = k;
    }
    int rez = 0;
    for (int i = 0; i < n; i++)
    {
        if (lps[i] && (i + 1) % (i + 1 - lps[i]) == 0)
            rez = i;
    }
    return rez + 1;
}

int main()
{
    int t;
    fin >> t;
    for (int i = 1; i <= t; i++)
    {
        string s;
        fin >> s;
        fout << solve(s) << '\n';
    }
    return 0;
}