Pagini recente » Cod sursa (job #352788) | Cod sursa (job #237074) | Cod sursa (job #1557597) | Cod sursa (job #1371066) | Cod sursa (job #36968)
Cod sursa(job #36968)
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define MN (1048576)
int prefix[MN];
char line[MN];
int main()
{
int T;
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
for(scanf("%d ", &T); T --; ) {
int i, k, r = 0;
fgets(line+1, MN, stdin);
prefix[1] = 0;
for(i = 2, k = 0; isalpha(line[i]); ++ i) {
while(k && line[k+1] != line[i])
k = prefix[k];
if(line[k+1] == line[i])
++ k;
prefix[i] = k;
if(k && (i%(i-k) == 0))
r = i;
}
printf("%d\n", r+(r%2));
}
fclose(stdin);
fclose(stdout);
return 0;
}