Pagini recente » Cod sursa (job #2221586) | Cod sursa (job #1737078) | Cod sursa (job #2346072) | Cod sursa (job #1856555) | Cod sursa (job #3321103)
#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;
}