Pagini recente » Cod sursa (job #2623121) | Cod sursa (job #906815) | Cod sursa (job #379041) | Cod sursa (job #926310) | Cod sursa (job #2720505)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
vector<int> preffix_function(const string &A) {
vector<int> pi(A.size());
int N = A.size() - 1;
for(int i = 2, q = 0; i <= N; ++i) {
while(q && A[q + 1] != A[i])
q = pi[q];
if(A[q + 1] == A[i])
++q;
pi[i] = q;
}
return pi;
}
void test_case() {
string s;
fin >> s;
s = '0' + s;
vector<int> pi = preffix_function(s);
int N = s.size() - 1;
for(int i = N; i > 0; --i)
if(pi[i] && i % (i - pi[i]) == 0) {
fout << i << '\n';
return;
}
fout << "0\n";
}
int main() {
int T;
fin >> T;
for(int tc = 0; tc < T; ++tc)
test_case();
}