Pagini recente » Cod sursa (job #738820) | Cod sursa (job #2567980) | Cod sursa (job #1083075) | Istoria paginii runda/doartest | Cod sursa (job #1561841)
#include <iostream>
#include <cstdio>
#include <cstring>
#define MAXN 1000050
using namespace std;
char s[MAXN];
int pi[MAXN], n, t;
void solve()
{
int k, maxi;
pi[1] = k = maxi = 0;
for (int i = 2; i <= n; ++i) {
while (s[i-1] != s[k] && k)
k = pi[k];
if (s[i-1] == s[k])
k++;
pi[i] = k;
if (k<<1 >= i && k%(i-k) == 0)
maxi = i;
}
printf("%d\n", maxi);
}
int main()
{
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
scanf("%d\n", &t);
for (int i = 1; i <= t; ++i)
{
gets(s);
n = strlen(s);
solve();
}
return 0;
}