Pagini recente » Cod sursa (job #3268144) | Cod sursa (job #1580639) | Cod sursa (job #1453935) | Cod sursa (job #2637947) | Cod sursa (job #2749301)
#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
const int NMAX = 1e6;
int pi[1 + NMAX];
std::string a;
int main() {
std::ifstream in("prefix.in");
std::ofstream out("prefix.out");
int tests;
in >> tests;
while (tests--) {
in >> a;
int ans = 0;
memset(pi, 0, sizeof(pi));
a = "." + a;
int k = 0;
pi[1] = 0;
for (int i = 2; i < a.size(); ++i) {
while (k > 0 && a[k + 1] != a[i])
k = pi[k];
if (a[k + 1] == a[i])
++k;
pi[i] = k;
int x = i - k;
if (i % x == 0 && i != x)
ans = std::max(ans, i);
}
out << ans << '\n';
}
return 0;
}