Pagini recente » Cod sursa (job #2509180) | Cod sursa (job #1151922) | Cod sursa (job #342618) | Cod sursa (job #736300) | Cod sursa (job #1417658)
#include <cstdio>
#include <cstring>
int N, len;
char str[1000100];
int table[1000100];
void prefix() {
int match = 0, maxim = 0;
table[1] = 0;
for (int i=2; i<=len; ++i) {
while (match > 0 && str[match+1] != str[i])
match = table[match];
if (str[match+1] == str[i]) {
match++;
if (i % (i-match) == 0)
maxim = i;
}
table[i] = match;
}
printf("%d\n", maxim);
}
int main () {
freopen("prefix.in", "rt", stdin);
freopen("prefix.out", "wt", stdout);
scanf("%d", &N);
for (;N;--N) {
scanf("%s", str+1);
len = strlen(str+1);
prefix();
}
return 0;
}