Pagini recente » Cod sursa (job #2633208) | Cod sursa (job #2890456) | Cod sursa (job #1933474) | Cod sursa (job #2735347) | Cod sursa (job #2483131)
#include <bits/stdc++.h>
using namespace std;
int lps[1000005];
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;
i++;
}
else {
if (len != 0) {
len = lps[len - 1];
}
else {
lps[i] = 0;
i++;
}
}
}
}
void solve() {
string s;
int mx = -2e9;
in >> s;
compute_lps(s);
//for (int i = 0; i < s.size(); i++) cout << lps[i] << " ";
//cout << "\n";
for (int i = 1; i < s.size(); i++) {
if (lps[i] && (i + 1) % (i + 1 - lps[i]) == 0) {
mx = max(mx, (i + 1));
}
}
mx != -2e9 ? out << mx << "\n" : out << "0\n";
return;
}
int main() {
int t;
in >> t;
while(t--) {
solve();
}
}