Pagini recente » Cod sursa (job #408348) | Cod sursa (job #2380352) | Cod sursa (job #3252767) | Cod sursa (job #707429) | Cod sursa (job #2483137)
#include <bits/stdc++.h>
using namespace std;
int lps[1000005];
int mx;
ifstream in("prefix.in");
ofstream out("prefix.out");
void compute_lps(string s) {
memset(lps, 0, sizeof(lps));
int len = 0, i = 1;
while(i < s.size()) {
if (s[i] == s[len]) {
len++;
lps[i] = len;
if ((i + 1) % (i + 1 - lps[i]) == 0) {
mx = max(mx, (i + 1));
}
i++;
}
else {
if (len != 0) {
len = lps[len - 1];
}
else {
lps[i] = 0;
i++;
}
}
}
}
void solve() {
string s;
mx = -2e9;
in >> s;
compute_lps(s);
mx != -2e9 ? out << mx << "\n" : out << "0\n";
return;
}
int main() {
int t;
in >> t;
while(t--) {
solve();
}
}