Pagini recente » Cod sursa (job #499390) | Cod sursa (job #2817434) | Cod sursa (job #2815015) | Cod sursa (job #499476) | Cod sursa (job #2716524)
#include <fstream>
#include <cstring>
using namespace std;
const int LMAX = 1e6;
char s[LMAX + 2];
int pi[LMAX + 1];
int main() {
ifstream in("prefix.in");
ofstream out("prefix.out");
int t, n, lung, rez;
in >> t;
while (t--) {
in >> (s + 1);
pi[1] = lung = rez = 0;
n = strlen(s + 1);
for (int i = 2; i <= n; ++i) {
while (lung > 0 && s[i] != s[lung + 1])
lung = pi[lung];
if (s[i] == s[lung + 1])
++lung;
pi[i] = lung;
if (lung && i % (i - lung) == 0)
rez = max(rez, i);
}
out << rez << '\n';
}
in.close();
out.close();
return 0;
}