Pagini recente » Cod sursa (job #2113775) | Cod sursa (job #1746647) | Cod sursa (job #606148) | Cod sursa (job #1303305) | Cod sursa (job #1595685)
#include<cstdio>
#include<cstring>
#define DIM 1000003
using namespace std;
FILE *fin = freopen("prefix.in","r",stdin);
FILE *fout = freopen("prefix.out","w",stdout);
int T, N;
int v[DIM];
char S[DIM];
void Solve();
int main()
{
scanf("%d\n", &T);
while (T--)
{
gets(S + 1);
N = strlen(S + 1);
Solve();
}
}
void Solve()
{
int k = 0;
v[1] = 0;
for (int i = 2; i <= N; i++)
{
while (k && S[k + 1] != S[i])
k = v[k];
if (S[k + 1] == S[i])
++k;
v[i] = k;
}
for (int i = N; i; i--)
if (v[i] && i % (i - v[i]) == 0)
{
printf("%d\n", i);
return;
}
printf("0\n");
}