Pagini recente » Cod sursa (job #2064250) | Cod sursa (job #714984) | Cod sursa (job #1842939) | Cod sursa (job #885497) | Cod sursa (job #1107868)
#include <cstdio>
#include <cstring>
using namespace std;
const int NMAX = 1000010;
int T, N, PI[NMAX];
char S[NMAX];
int LongestPeriodicPrefix()
{
int Q = 0;
PI[1] = 0;
for(int i = 2; i <= N; ++ i)
{
while(Q && S[Q + 1] != S[i]) Q = PI[Q];
if(S[Q + 1] == S[i]) Q ++;
PI[i] = Q;
}
for(int i = N; i; -- i)
if(PI[i] && i % (i - PI[i]) == 0)
return i;
return 0;
}
int main()
{
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
scanf("%i\n", &T);
for(; T; T --)
{
gets(S + 1);
N = strlen(S + 1);
printf("%i\n", LongestPeriodicPrefix());
}
}