Pagini recente » Cod sursa (job #1338298) | Cod sursa (job #449961) | Cod sursa (job #2519115) | Cod sursa (job #1023103) | Cod sursa (job #1561827)
#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] != s[k+1] && k)
k = pi[k];
if (s[i] == s[k+1])
k++;
pi[i] = k;
if (2*k >= i) {
int fraze = i-k;
if ((!fraze || k % fraze == 0) && i > maxi)
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);
for (int i = strlen(s); i; --i)
s[i] = s[i-1];
solve();
}
return 0;
}