Pagini recente » Cod sursa (job #2526808) | Cod sursa (job #1466062) | Cod sursa (job #2265167) | Cod sursa (job #1366922) | Cod sursa (job #2424686)
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
char s[1000001];
int f[1000001];
int main()
{
int n, t;
in >> t;
while (t--)
{
in >> (s + 1);
n = strlen(s + 1);
f[1] = 1;
int maxim = 0;
for (int i = 2, j = 1; i <= n; ++i)
{
while (j > 1 && s[i] != s[j])
j = f[j - 1];
if (s[i] == s[j])
f[i] = ++j;
else
f[i] = 1;
if (f[i] != 1 && (i == f[i] || i % (i - f[i] + 1) == 0))
maxim = i;
}
out << maxim << '\n';
}
return 0;
}