Pagini recente » Cod sursa (job #1522106) | Cod sursa (job #2086224) | Cod sursa (job #790598) | Cod sursa (job #2790585) | Cod sursa (job #1561835)
#include <iostream>
#include <cstdio>
#include <cstring>
#define MAXN 1000050
using namespace std;
char s[MAXN];
int pi[MAXN], n, t;
void solve()
{
int k = 0, st = 0, maxi = 0;
pi[1] = 0;
for (int i = 2; i <= n; i++) {
while (s[i-1] != s[k+1-1] && k)
k = pi[k];
if (s[i-1] == s[k+1-1])
k++;
pi[i] = k;
if (k<<1 >= i) {
int fraze = i-k;
if (k % fraze == 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;
}