Pagini recente » Cod sursa (job #1472083) | Cod sursa (job #2069755) | Cod sursa (job #377148) | Cod sursa (job #1771789) | Cod sursa (job #884912)
Cod sursa(job #884912)
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
#define Nmax 1000010
int T, PI[Nmax], N;
char A[Nmax];
void Solve()
{
memset(PI, 0, sizeof(PI));
int i, P = 0;
PI[1] = 0;
for(i = 2; i <= N; i++)
{
while(P && A[P + 1] != A[i]) P = PI[P];
if(A[P + 1] == A[i]) P ++;
PI[i] = P;
}
for(i = N; i; i--)
if(PI[i] && i % (i - PI[i]) == 0)
{
printf("%i\n", i);
return ;
}
printf("0\n");
}
int main()
{
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
scanf("%i\n", &T);
for(; T; T --)
{
gets(A + 1);
N = strlen(A + 1);
Solve();
}
return 0;
}