Pagini recente » Cod sursa (job #1895440) | Cod sursa (job #1541278) | Cod sursa (job #2949739) | Cod sursa (job #2138732) | Cod sursa (job #1987703)
#include <cstdio>
#include <cstring>
const int MAXN = 1e6;
char pi[MAXN], s[MAXN];
int main() {
int t, ans, n, q;
FILE *fin = fopen("prefix.in", "r");
fscanf(fin, "%d", &t);
FILE *fout = fopen("prefix.out", "w");
for (; t > 0; --t) {
fscanf(fin, "%s", s);
n = strlen(s);
q = ans = 0;
for (int i = 1; i < n; ++i) {
while ((q > 0) && (s[i] != s[q])) {
q = pi[q - 1];
}
if (s[i] == s[q]) {
++q;
}
pi[i] = q;
if ((q) && !((i + 1) % ((i + 1) - q))) {
ans = i + 1;
}
}
fprintf(fout, "%d\n", ans);
}
fclose(fin);
fclose(fout);
return 0;
}