Pagini recente » Cod sursa (job #3185492) | Cod sursa (job #98096) | Cod sursa (job #2587407) | Cod sursa (job #206000) | Cod sursa (job #3242734)
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
int pi[N], n, m;
void kmp(string &s) {
int k = 0;
for(int i = 1; i < n; i++) {
while(k > 0 && s[i] != s[k]) {
k = pi[k - 1];
}
if(s[i] == s[k])
k++;
pi[i] = k;
}
}
// #define HOME
int main() {
#ifndef HOME
ifstream cin("prefix.in");
ofstream cout("prefix.out");
#endif
int t;
cin >> t;
while(t--) {
string s;
cin >> s;
n = s.length();
kmp(s);
int res = 0;
for(int i = 1; i <= n; i++) {
if(pi[i - 1] && i % (i - pi[i - 1]) == 0)
res = i;
}
cout << res << "\n";
}
return 0;
}