Pagini recente » Cod sursa (job #2316199) | Cod sursa (job #2180063) | Cod sursa (job #3123683) | Cod sursa (job #1780775) | Cod sursa (job #1830959)
#include <iostream>
#include <cstdio>
#include <cstring>
#define nmax 1000000+5
using namespace std;
char a[nmax];
int n;
int largest_period(int d)
{
int i, j;
for (i = 0; i < d; i++)
if (a[i] != a[i+d])
return 0;
int max_size = d*2;
for (j = d*2; j+d < n; j+= d) {
for (i = 0; i < d; i++)
if (a[i] != a[j+i])
return max_size;
max_size = j + d;
}
return max_size;
}
int main()
{
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
int t;
scanf("%d", &t);
for (int i = 0; i < t; i++) {
scanf("\n");
scanf("%s", a);
n = strlen(a);
int x = largest_period(1);
for (int d = 2; d <= n / 2; d++)
{
int y = largest_period(d);
if (y > x)
x = y;
}
printf("%d\n", x);
}
return 0;
}